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 "[2J"
}
PROMPT_COMMAND="prompt_on_top"
trap 'pre_cmd' DEBUG
bash
tem PROMPT_COMMAND , que detém o O comando será executado antes do prompt bash
show. Aqui nós configuramos para funcionar como prompt_on_top
, que usa tput para coloque o cursor no topo da tela.
bash
também tem uma maneira de executar um comando antes de executar qualquer comando, usando armadilha para lidar com o sinal DEBUG
. Aqui nós o configuramos para funcionar pre_cmd
, que limpará a tela antiga e não fará nada se concluirmos ( COMP_LINE não está vazio) ou execute o comando em BASH_PROMPT
.
Há uma limitação com essa abordagem, se a saída do comando for muito longa demais em uma tela, a saída será substituída por prompt_on_top
action. Neste caso, você precisa canalizar a saída para um pager para ler toda a saída.