zsh - 在执行命令之前检查命令的参数

zsh - 在执行命令之前检查命令的参数

问题:有没有一种简单的方法可以教我zsh在执行之前检查命令行?我知道我可以用额外的脚本完全包装特定的程序,但这不是我想要做的。

例子: 使用制表符补全,我很容易发生这样的情况:我通过gcc错误调用覆盖了我的输入文件,例如

gcc test.c -o test.c

代替

gcc test.c -o test

答案1

您可以重新定义accept-line zle小部件来执行您想要的所有检查,例如:

accept-line() {
  if [[ $BUFFER =~ '^gcc.*-o\s*\S*\.c\b' ]]; then
    zle -M 'I will not do that!'
  else
    zle .$WIDGET "$@"
  fi
}
zle -N accept-line

相关内容