推送/弹出当前目录?

推送/弹出当前目录?

使用 bash 是否有办法推送和弹出当前工作目录?我尝试写入,bash;cd dir; ./dostuff;exit;但当前目录现在是dir

答案1

pushdpopd

Bash 将保留您访问的目录的历史记录,您只需提出请求即可。Bash 将历史记录存储在堆栈中,并使用命令 pushd 和 popd 来管理堆栈。

更多内容

例子:

$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me

答案2

调用bash会启动一个新的子 shell,它有自己的输入;在它退出之前,其他命令都不会运行。用括号括住要运行的命令也会启动一个新的子 shell,但它会运行其中的命令。

( cd dir ; ./dostuff )

答案3

如果不需要多级目录历史记录,您也可以执行以下操作:

cd foo
# do your stuff in foo
cd -

pushd与/相比popd,它的缺点是,如果cd foo失败,您最终会进入错误的目录cd -

(可能cd -在脚本之外更方便。“让我们回到我刚才所在的地方。”)

答案4

pushd添加到目录堆栈

popd从目录堆栈中删除

dirs查看目录堆栈

dirs -p“每行显示一个目录条目”

dirs -c“清除目录堆栈”

相关内容