我如何使用,即在 bash 变量中包含一个刚刚被推送的目录,而不是执行 popd 命令?
答案1
如果您只想知道上一个目录的名称,您可以发出
% echo $OLDPWD
如果你想进入该目录,你可以简单地做
% cd -
这将自动更改为$OLDPWD
如果您想要使用 Pushd-popd 创建的完整目录堆栈
% dirs -v
这将在目录名称旁边打印目录索引
您只需给出即可跳转到目录
% pushd +N
其中 N 是目录的索引。
答案2
DIRSTACK
包含目录堆栈当前内容的数组变量。目录按照内置的 dirs 显示的顺序出现在堆栈中。
最后推送的是"${DIRSTACK[0]}"
,第二个推送的是索引[1]
,等等。
me@hostname /tmp$ pushd a
/tmp/a /tmp
me@hostname /tmp/a$ pushd /tmp/b
/tmp/b /tmp/a /tmp
me@hostname /tmp/b$ dirs
/tmp/b /tmp/a /tmp
me@hostname /tmp/b$ declare -p DIRSTACK
declare -a DIRSTACK=([0]="/tmp/b" [1]="/tmp/a" [2]="/tmp")