![为了进入变量,已经推送了一个目录](https://linux22.com/image/190002/%E4%B8%BA%E4%BA%86%E8%BF%9B%E5%85%A5%E5%8F%98%E9%87%8F%EF%BC%8C%E5%B7%B2%E7%BB%8F%E6%8E%A8%E9%80%81%E4%BA%86%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95.png)
我如何使用,即在 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")