Mantenha a entrada do bash na linha superior da tela

10

Gostaria de manter a entrada do prompt de comando bash na parte superior da tela, de modo que as saídas de comandos mais antigos sejam empurradas para baixo em vez de para cima.

Como posso conseguir isso?

    
por Tom Price 25.07.2015 / 19:06

1 resposta

6

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.

    
por 25.07.2015 / 19:45