为了进入变量,已经推送了一个目录

为了进入变量,已经推送了一个目录

我如何使用,即在 bash 变量中包含一个刚刚被推送的目录,而不是执行 popd 命令?

答案1

如果您只想知道上一个目录的名称,您可以发出

% echo $OLDPWD

如果你想进入该目录,你可以简单地做

% cd -

这将自动更改为$OLDPWD

如果您想要使用 Pushd-popd 创建的完整目录堆栈

% dirs -v

这将在目录名称旁边打印目录索引

您只需给出即可跳转到目录

% pushd +N 

其中 N 是目录的索引。

答案2

在 Bash 中,有DIRSTACK数组变量:

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")

相关内容