Posso configurar o bash para executar “clear” antes de cada comando digitado no console?

22

Eu gostaria de configurar o bash para executar o comando clear toda vez que eu digitar algum comando no terminal (antes de executar meu comando). Como posso fazer isso?

Estou usando o Debian Linux.

    
por syntagma 03.08.2012 / 22:32

3 respostas

22

O Bash tem um gancho de pré-encomenda . Mais ou menos.

preexec () {
  clear
}
preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return                     # do nothing if completing
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
    local this_command='history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"'; # obtain the command from the history, removing the history number at the beginning
    preexec "$this_command"
}
trap 'preexec_invoke_exec' DEBUG
    
por 04.08.2012 / 01:03
6
bind 'RETURN: "\e[1~clear; \e[4~\n"'

Depois disso, cada vez que você pressionar return em vez de apenas \n , ele irá para o início da linha, digite o texto clear; , mova para o final e digite \n como esperado.

    
por 03.08.2012 / 22:48
2

de uma pergunta que fiz hoje (com crédito para o usuário @aecolley's answer ):

bind '"\C-m": "\C-l\C-j"'

O \C-m que simula a tecla "Enter", o \C-l simulando Ctrl+l como está claro e o \C-j é "newline-and-indent", então o comando está vinculando a tecla Enter a Ctrl + l & Ctrl + j

que funciona no GNU bash, versão 3.2.53 (1) -release (x86_64-apple-darwin14) e as outras respostas neste tópico não. Além disso, isso não polui o histórico com comandos 'clear' a cada outro comando.

    
por 24.01.2015 / 02:02