chb Asked: 2021-11-27 17:40:32 +0800 CST2021-11-27 17:40:32 +0800 CST 2021-11-27 17:40:32 +0800 CST bash中“pushd -n”的zsh等价物是什么? 772 我想将一个目录推送到目录堆栈上,以便使用“波浪号速记”来引用它(例如,~1指的是目录列表中的第二个条目),但我不想实际切换到该目录。在 bash 中,这似乎可以使用-n标志来完成pushd。 zsh中的等价物是什么? zsh cd-command 2 个回答 Voted Best Answer Gilles 'SO- stop being evil' 2021-11-28T05:54:15+08:002021-11-28T05:54:15+08:00 您可以编辑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 user10489 2021-11-27T19:40:53+08:002021-11-27T19:40:53+08:00 你总是可以推动它然后交换。 例如,pushd -q ~/Downloads; pushd
您可以编辑
dirstack
变量。如果您想将此行为添加到
pushd
自身,则可以将其设为函数。这个简单的版本不会
-n
像 bash 一样对待和另一个选项的组合。您甚至可以直接编辑变量。
你总是可以推动它然后交换。
例如,
pushd -q ~/Downloads; pushd