如何 popd 到特定目录?

如何 popd 到特定目录?

我曾经pushd移动到不同的目录,现在如果我运行

dirs -v

我得到:

 0  ~/Desktop
 1  /etc
 2  /var/log
 3  ~/Downloads
 4  /tmp

如何popd访问堆栈中间的特定目录?,例如option 2: /var/log

man bash

+n 删除从 dirs 显示的列表左侧计数的第 n 个条目
,从零开始。例如:“popd +0”删除
第一个目录,“popd +1”删除第二个目录。

我试过了

  • “弹出+0”
  • 流行+3

它会从堆栈中弹出正确的目录,但不会更改当前工作目录。

如何popd特定目录并将当前工作目录更改为“弹出”目录?

答案1

cd "`dirs +<number>`"

其中<number>0 或 3 或其他值。

无论如何,我建议您查看 CD 包装,例如 http://davidcorne.com/tag/cd/,它push会在后台进入目录堆栈,并允许您执行cd --而不是dirs -vcd -<number>进入您想要的目录。它还会用 替换初始波浪号$HOME,从而消除您在评论中提到的问题。

答案2

我在 Cygwin 发行版的 .bashrc 文件中找到了该脚本。它无法正常工作,因为在第 20 行

adir=$(dirs +$index)

adir 现在包含索引,例如“2 /cygdrive/d”,因此我随后添加了一行

adir=${adir:4}

这似乎有效

相关内容