zsh - verifica argumentos de um comando antes de executá-lo

4

Pergunta: Existe uma maneira fácil de ensinar zsh para verificar a linha de comando antes de executá-la? Eu sei que posso envolver completamente um programa específico com um script extra, mas isso não é o que eu quero fazer.

Exemplo: Usando o preenchimento de guias, pode acontecer facilmente, eu sobrescrevo o arquivo de entrada chamando gcc erroneamente, por exemplo,

gcc test.c -o test.c

em vez de

gcc test.c -o test
    
por jofel 19.04.2013 / 14:49

1 resposta

3

Você pode redefinir o widget accept-line zle para fazer todas as verificações desejadas:

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
    
por 19.04.2013 / 15:57