Como posso fazer o Bash (ou Zsh) executar um comando específico antes de cada comando digitado?

1

Eu gostaria de configurar o Bash para executar um comando em particular antes de executar cada linha de comando que eu digito no prompt. Especificamente, eu gostaria de dizer ao Vim (que está rodando em outro terminal) para escrever todos os buffers abertos, porque no meu fluxo de trabalho, se alguma coisa não é salva quando eu deixo o Vim, é um erro.

Existe uma opção para isso no Bash? Se não, existe uma opção no Zsh?

(Existe uma solução baseada na readline que de certa forma se encaixa nesse problema em outra pergunta, mas parece um pouco hacky Vai levar isso como último recurso.)

    
por Peeja 23.03.2012 / 18:31

2 respostas

2

Você pode usar 'precmd' em zsh para isso.

Provavelmente, você pode querer configurar backups no Vim, porque fazer esse tipo de coisa no precmd não parece certo para mim.

    
por 23.03.2012 / 19:32
0

Eu fiz coisas semelhantes usando uma pseudo-sub-shell usando o builtin como segue:

#!/bin/sh
#public domain fake shell template
while read -p "$PS1" CMD; do
   case "$CMD" in
      *bad_case*|*another_bad_case*)echo bad command: user info logged etc..;;
      *)<your_command_here>
         eval "$CMD";;
   esac
done
    
por 28.03.2012 / 05:55

Tags