想象一下我正在终端提示符下输入,但实际上决定不输入任何内容。相反,我只需按 Enter 键即可。
有没有办法让 zsh 现在运行命令?
我想潜在地使这个命令变量,例如重复最后一个命令,或者如果最后一个命令是z
然后在空白提示符上按 Enter 键应该运行echo $PWD
。
我怎样才能做到这一点?
答案1
您可以尝试使用preexec
和precmd
挂钩:
preexec(){ cmd=$1; }
precmd(){ if [ "$cmd" ]; then lcmd=$cmd; cmd=; else; echo "<no command> last was <$lcmd>"; fi; }
zsh$ :
zsh$
<no command> last was <:>
zsh$ pwd
/home2/ahq
Hook Functions
您应该阅读联机帮助页的小节中的全部内容zshmisc(1)
,尤其是有关传递给 的参数的部分preexec
。
此外,您可以使用add-zsh-hook
:
autoload -Uz add-zsh-hook
add-zsh-hook -Uz precmd my_precmd