如何在終端/外殼中獲取最近的位置?
有沒有辦法獲得在終端(osx)中導航的最新“地點”(目錄)的列表?我的意思是,我想打開我的終端,輸入一些命令,獲取我最近去過的 2 或 3 個地方,然後去那裡。
類似於箭頭對最近命令的作用。
可能嗎?
如果您的 shell 是
zsh
(AFAIK 是較新版本的 macos 中的預設值),您可以設置autopushd
選項(set -o autopushd
在 your 中~/.zshrc
),這將導致zsh
記住您去過的所有位置(目前工作目錄,更改為cd
/pushd
/ )。popd
然後,您可以看到該堆棧:
dirs
或者
dirs -v
,請查看堆棧上每個目錄的索引,例如,您可以在 中使用它cd +5
,或者ls -ld ~+5
在第 5 個條目中使用該索引(通過頂行,即dirs
的輸出中的目前目錄)。或者:
print -rC1 $dirstack
(
$dirstack
在數組中公開該堆棧,沒有目前工作目錄)。或者,如果您啟用了帶有描述的高級補全(請參閱 參考資料
compinstall
),補全列表位於:cd +<Tab>
或者
cd -<Tab>
~-
或者對於or之後的任何命令~+
:any cmd ~+<Tab>
例如,與
set -o autopushd zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' menu select=2 autoload -Uz compinit compinit -i
在
~/.zshrc
,在我訪問了幾個目錄之後,按Tab
兩次後,我得到一個菜單,例如:% cd +1 Completing directory stack [1 -- ~/Videos] 2 -- ~/Downloads 3 -- ~/ 4 -- /usr 5 -- /tmp
我可以用箭頭鍵導航。
目錄堆棧功能本身不是 zsh 特定的。它和操作它的//
pushd
命令是1980 年引入的,後來被(1989 年的 1.02)和(1990 年的 1.0)複製。,也來自(1991 年在 2.0 中添加到 zsh)。/來自(1989),後來由(1991) 複製,而來自(1996),後來由(1997) 複製。只有(因為也使用該堆棧,如靜默)是特定的,並且它的完成框架遠遠領先於和現在(但正在被 趕上)。popd``dirs``csh``bash``zsh``cd +5``cd -5``csh``~+``~-``bash``zsh``~+5``zsh``bash``autopushd``cd``pushd``zsh``bash``tcsh``fish