從 zsh 中的目前目錄中刪除目錄部分

從 zsh 中的目前目錄中刪除目錄部分

假設我 cd 到/usr/local/bin但我想將我的 pwd 更改為/usr/bin,我該如何使用 zsh 做到這一點?我知道我可以做類似cd /a/b/然後 的事情cd b c,以便將我的 pwd 更改為/a/b,但我不太清楚如何做我想做的事。

答案1

鑑於 zsh 的靈活功能cd,至少有三種方法可以滿足您的需求。您可以寫cd /usr/local /usrcd local /cd local/bin bin。人們或許可以想出更多的解決方案。

cdzsh 中的語法是cd OLD NEW.此命令$PWD與您的 進行匹配OLD,並將任何匹配的部分替換為NEW。您應該記住,cd它是相對於您當前目錄工作的,因此如果您cd /usr/local usr在 中寫入/usr/local/bin,zsh 會給您一個錯誤,因為不存在這樣的目錄/usr/local/bin/usr/bin。始終注意斜線。

答案2

您可以使用的兩個參數形式cd替換目前工作目錄的子字串。例如,要刪除/local,您可以使用

cd /local ''

由於多個斜線沒有任何區別,您也可以將其寫為cd /local /(結果為/usr//bin,然後雙斜線被簡化為單斜線) 或cd local /(也導致/usr//bin)。

另一種方法是使用命令列版本。使用預設設置,cd $PWD在命令列中鍵入,然後按Tab:變數替換將替換為變數的值,您可以隨意編輯它。在下面setopt auto_cd,你不需要cd先寫。如果您的配置導致Tab無法擴展變量,請使用呼叫 zle 函數的任意鍵expand-or-complete而不是complete-word

相關內容