有沒有辦法在 bash 中多次 cd 返回?

有沒有辦法在 bash 中多次 cd 返回?

我常常cd -回到原來的地方。如何在 bash 中多次執行此操作?或者 zsh 或其他工具會支援這個嗎?

答案1

在 zsh 中,有一個auto_pushd選項。此選項使cd行為類似於pushd.然後您可以使用popd返回到先前的目錄。

~ $ setopt auto_pushd
~ $ cd /
/ $ cd /var
/var $ cd /usr
/usr $ dirs
/usr /var / ~
/usr $ popd
/var $ popd
/ $ popd
~ $

在 Bash 中,您可以cdpushd.

alias cd=pushd

這樣做的一個缺點是您將失去cd的三個標誌。從cd幫助條目:

-L 強制遵循符號連結
-P 使用物理目錄結構而不遵循符號連結
-e 如果提供了 -P 選項,並且無法成功確定當前工作目錄,則以非零狀態退出

如果您必須使用實際的cd內建函數而不是別名,您可以使用以下其中之一:

  • 'cd'- 引用該指令使 shell 不解析別名並使用普通 cd。
  • \cd- 反斜線引用字元。如果引用單字的一個字符,shell 會將整個單字視為被引用。
  • builtin cd- 這直接告訴 shell 使用內建函數而不是別名。

答案2

這是一種快速但骯髒的方法,可以方便地為目錄添加書籤並跳回它們:

$ a() { alias $1="cd $PWD"; }

去某個地方並輸入:

$ a 1

您現在有一個名為的命令1,它可以執行cd目前的目錄。稍後只需輸入:

$ 1

很快,回到那個目錄。我發現這非常有用。

答案3

巴什

我找到了一個可用的腳本這裡,這為我解決了這個問題。透過此命令,您可以鍵入內容cd --來查看您最近使用過的 10 個目錄。它看起來像這樣:

0  ~/Documents/onedir
1  ~/Music/anotherdir
2  ~/Music/thirddir
3  ~/etc/etc

轉到~/Music/thirddir只需鍵入cd -2

桀騁

oh-my-zsh 為此提供了一些非常好的功能(至少我認為是 oh-my-zsh 設定了這個)。

基本上,d別名為dirs -v | head -10

dirs是 zsh 內建指令,顯示您最近造訪過的目錄。

此外,所有數字的1別名cd -1等等9

實際上,它的工作原理如下:

$ pwd
/home/me/Documents/gems/java_regex/lib

$ d
0       ~/Documents/gems/java_regex/lib
1       ~/Documents/gems/java_regex
2       ~/Documents/gems
3       ~/Documents
4       ~

$ 2
~/Documents/gems

$ pwd
/home/me/Documents/gems

答案4

是的。我們可以讓您的cd命令更加強大。 Bash 設定檔允許我們按照我們想要的方式自訂它。

我們可以cd使用別名

例如 :

alias ..5="cd ../../../../.."

這將使您向上移動 5 個目錄。

相關內容