Zsh

bash中“pushd -n”的zsh等價物是什麼?

  • November 27, 2021

我想將一個目錄推送到目錄堆棧上,以便使用“波浪號速記”來引用它(例如,~1指的是目錄列表中的第二個條目),但我不想實際切換到該目錄。在 bash 中,這似乎可以使用-n標誌來完成pushd

zsh中的等價物是什麼?

您可以編輯dirstack變數。

function insertd {
 emulate -L zsh
 typeset -i n=0
 while [[ $1 == [+-]<-> ]]; do
   n=$1
   shift
 done
 if (($# != 1)); then
   echo 1>&2 "Usage: insertd [+N|-N] DIR"
   return 3
 fi
 dirstack=($dirstack[1,$n] $1 $dirstack[$n,-1])
}

如果您想將此行為添加到pushd自身,則可以將其設為函式。

function pushd {
 if [[ $1 == -n ]]; then
   shift
   insertd "$@"
 else
   builtin pushd "$@"
 fi
}

這個簡單的版本不會-n像 bash 一樣對待和另一個選項的組合。

您甚至可以直接編輯變數

vared dirstack

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