我想将目录推送到目录堆栈上,以便使用“波形符简写”引用它(例如,~1
引用目录列表中的第二个条目),但我不想实际切换到该目录。在 bash 中,这似乎可以使用标志-n
to 来完成pushd
。
zsh 中的等效项是什么?
答案1
您可以编辑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
答案2
你总是可以推送它然后交换。
例如,pushd -q ~/Downloads; pushd