引用 `dirs` 中的项目

引用 `dirs` 中的项目

我过去经常使用和pushd中的多个目录。我已经使用了别名,以便当我想查看目录堆栈上的内容时可以获得有序列表:bashzshdirsdirs -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 ~2print -r $dirstack[2].

答案2

是的,在 bash 中:

cp $(dirs +2) ~/code/bar/view/static/css/

甚至更简单:

cp ~2 ~/code/bar/view/static/css/

相关内容