我曾经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 -v
并cd -<number>
进入您想要的目录。它还会用 替换初始波浪号$HOME
,从而消除您在评论中提到的问题。
答案2
我在 Cygwin 发行版的 .bashrc 文件中找到了该脚本。它无法正常工作,因为在第 20 行
adir=$(dirs +$index)
adir 现在包含索引,例如“2 /cygdrive/d”,因此我随后添加了一行
adir=${adir:4}
这似乎有效