我过去经常使用和pushd
中的多个目录。我已经使用了别名,以便当我想查看目录堆栈上的内容时可以获得有序列表:bash
zsh
dirs
dirs -v
chb$ dirs
0 /Volumes/banister/grosste_daever_gh/2013-03-27/reader
1 /tmp/20130618202713/Library/Internet Plug-Ins
2 ~/code/foo/view/static/css
3 ~/Downloads
有没有一种方法(在bash
或中zsh
)可以使用别名来引用命令行上列出的目录之一在堆栈中的位置?例如,不要输入:
chb$ cp ~/code/foo/view/static/css/baz.css ~/code/bar/view/static/css/
我会输入:
chb$ cp <2>baz.css ~/code/bar/view/static/css/
...或者其他的东西喜欢那,也许使用美元符号和变量名而不是<n>
.
答案1
Bash 公开目录堆栈DIRSTACK
多变的。您还可以使用该命令dirs +2
来引用堆栈上的第二个条目。
更方便的是,~1
通过~9
引用堆栈上最上面的九个条目。所以你的例子会翻译成
chb$ cp ~2/baz.css ~/code/bar/view/static/css/
Zsh 有相同~n设施,并且堆栈通过一个名为 的数组公开dirstack
。 Bashdirs +2
是 zshprint -r ~2
或print -r $dirstack[2]
.
答案2
是的,在 bash 中:
cp $(dirs +2) ~/code/bar/view/static/css/
甚至更简单:
cp ~2 ~/code/bar/view/static/css/