Bash

引用dirs中的一個項目

  • June 26, 2013

我過去常常在和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>.

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].

是的,在 bash 中:

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

甚至更簡單:

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

引用自:https://unix.stackexchange.com/questions/80692