标签: pushd

可以在Dockerfile中使用pushd/popd吗?

有没有办法在Dockerfile中使用pushd/popd命令?它会制作一些安装脚本,如果可能的话我会更容易.

dockerfile pushd

9
推荐指数
1
解决办法
683
查看次数

pushd 没有进入指定目录

我正在尝试使用 pushd

 #!/bin/bash

 function cloneAll {
   [ -d ~/mapTrials ] || mkdir ~/mapTrials
   pushd '~/mapTrials/'
   echo $(pwd)
   popd
}
Run Code Online (Sandbox Code Playgroud)

echo $(pwd)为我提供了与我从中调用脚本相同的工作目录。

我在其他 SO 答案中读到 pushd 仅适用于子进程,我必须为其创建别名。我也这样做了。

我尝试执行一些命令,例如mkdir查看它的创建位置。它是在我调用脚本的目录中创建的,而不是在pushd.

我如何让这个工作?如何进入 shell 脚本中的特定目录,然后在该目录中执行命令?

提前致谢。

directory bash shell pushd

6
推荐指数
1
解决办法
2752
查看次数

bash:在脚本末尾pushd 后不需要调用popd 吗?

我在我的 bash 脚本中遇到了一些麻烦,无法进行适当的“pushd/popd 清理”。也就是说:如果我做pushd了几次,我想确保popd之前做同样的次数exit

但是,我注意到 pushd/popd 堆栈似乎不是全局的。

假设我example-pushd-twice.sh在 homedir 中调用了这个脚本:

pushd /etc
pushd /tmp
Run Code Online (Sandbox Code Playgroud)

我从我的 homedir 中的 shell 中执行此操作:(导致块引用中的输出)

dirs

~

./example-pushd-twice.sh

/etc ~
/tmp /etc ~

我现在希望仍然在/tmp并且仍然有一个包含 3 个目录的目录堆栈,但是:

dirs

~

这是正确的行为吗?我可以信任一个 shell 脚本来调用它自己的 pushd/popd 堆栈,这样我就不必关心事后清理了吗?

bash shell scripting stack pushd

3
推荐指数
1
解决办法
1515
查看次数

批处理退出时隐式“popd”

pushd有没有办法在脚本末尾撤消所有内容。我所拥有的是:

pushd somwhere
rem doing stuff
goto end

:end
popd
goto :EOF
Run Code Online (Sandbox Code Playgroud)

我想要的是:

setlocal
pushd somwhere
rem doing stuff
goto :EOF
Run Code Online (Sandbox Code Playgroud)

但这不起作用,目录保持“pushd”状态。我无法说出pushd会发生多少次的另一种尝试是:

set CurrentDir=%CD%
rem doing a lot of pushd and popd
pushd somwhere

:POPBACK
if /i not "%CD%" == "%CurrentDir%" popd & goto POPBACK
Run Code Online (Sandbox Code Playgroud)

但这看起来我很容易陷入困境:POPBACK。添加一个计数器来退出该循环有点不确定我最终会在哪个目录。

在这种情况下,我想知道 a 是否可以看到 Pushd 目录的堆栈。我发现的唯一的事情是$+prompt $P$+$G每个 Pushd 目录添加一个“+”,例如D:\CMD++>。但我看不出如何利用它。

编辑:我刚刚注意到有一些问题让$+prompt困惑。上面示例setlocal中的实际上使脚本返回到初始目录,但提示符显示一个“+”,表示缺少popd.

D:\CMD>test.cmd
D:\CMD>prompt $P$+$g
D:\CMD>setlocal
D:\CMD>pushd e:\DATA …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file pushd

3
推荐指数
1
解决办法
1191
查看次数

标签 统计

pushd ×4

bash ×2

shell ×2

batch-file ×1

cmd ×1

directory ×1

dockerfile ×1

scripting ×1

stack ×1

windows ×1