Bash

pushd .cd - 之間的衝突

  • December 16, 2016

我很高興使用該cd -命令轉到上一個目錄。同時我喜歡pushd .popd

但是,當我想通過 記住目前工作目錄時pushd .,我失去了通過 轉到上一個目錄的可能性cd -。(pushd .也執行cd .)。

怎麼用pushd還可以用cd -

順便說一句:GNU bash,版本 4.1.7(1)

你可以使用這樣的東西:

push() { 
   if [ "$1" = . ]; then
       old=$OLDPWD
       current=$PWD
       builtin pushd .
       cd "$old"
       cd "$current"
   else
       builtin pushd "$1"
   fi
}

如果你命名它pushd,那麼它將優先於內置函式,因為函式在內置函式之前被評估。

您需要變數oldcurrent因為覆蓋OLDPWD會使它失去其特殊含義。

Wojtek 的回答稍微簡潔一點:

pushd () {
       if [ "$1" = . ]; then
               cd -
               builtin pushd -
       else    
               builtin pushd "$1"
       fi      
}

通過命名函式pushd,您可以pushd正常使用,您無需記住使用函式名稱。

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