Shell

如何在終端/外殼中獲取最近的位置?

  • January 9, 2021

有沒有辦法獲得在終端(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

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