Zsh

無法理解 Zsh 的 autopushd 的好處

  • March 6, 2021

我在 .zshrc

setopt autopushd

它使 cd 的行為類似於 pushd。這意味著我們根本沒有堆棧。當我使用它時,我根本沒有使用堆棧,因為它從我身上刪除了堆棧。

我不確定 autopushd 有什麼好處。

自動推送有什麼好處?

pushd 類似於 cd,但它也將目前目錄推送到堆棧上。您可能在 /some/deep/directory 中,然後需要在 /var/www 中閒逛一會兒:

crb@server /some/deep/directory $ pushd /var/www/
/var/www /some/deep/directory
crb@server /var/www $ [do some stuff]
crb@server /var/www $ popd
/some/deep/directory
crb@server /some/deep/directory $

autopushd 的意思是,即使你輸入了 ‘cd’,你也會得到輸入 ‘pushd’ 的效果,直到你想“伙計,我真希望我能回到以前”。然後,您可以通過目錄歷史記錄返回。

知道您總是可以通過鍵入“cd -”更改到之前所在的目錄(而不是父目錄),這很有用。

這是另一個很好的文章

編輯為什麼可以使用 cd - 時使用 pushd?

cd /foo/bar
cd /baz
cd /somewhere/else

cd - 只會讓你進入 /baz。pushd 會讓你回到你輸入’cd /foo/bar’之前的位置。

目錄堆棧在腳本中特別有用,在腳本中您不能只返回命令歷史並辨識您所在的目錄的名稱:

pushd /var/foo
# run a command, which might well change your PWD at the end of its execution - especially if it fails
popd

您現在可以保證在 /var/foo 中。

引用自:https://serverfault.com/questions/35312