Adicione estas linhas ao seu .bashrc
:
prompt_on_top() {
tput cup 0 0
tput el
tput el1
}
pre_cmd() {
if [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] || [ -n "$COMP_LINE" ]; then
return
fi
printf "\33[2J"
}
PROMPT_COMMAND="prompt_on_top"
trap 'pre_cmd' DEBUG
bash
tem PROMPT_COMMAND , que mantém o comando será executado antes do bash
prompt de exibição. Aqui, configuramos a função prompt_on_top
, que usa tput para definir o cursor na parte superior da tela.
bash
também tem uma maneira de executar um comando antes de executar qualquer comando, usando trap para manipular o sinal DEBUG
. Aqui nós configurá-lo para a função pre_cmd
, que irá limpar a tela de idade, e não fazer nada se fez conclusão ( COMP_LINE não está vazia) ou comando executado em BASH_PROMPT
.
Há uma limitação nessa abordagem: se a saída do comando for muito longa demais para uma tela, a saída será substituída pela prompt_on_top
ação. Nesse caso, você precisa canalizar a saída para um pager para ler a saída inteira.
cat
um arquivo, a ordem seria invertida?