Limpa metade da tela da linha de comando

10

Existe alguma maneira de limpar o terminal, mas em vez de deixar o prompt na parte superior da tela, ele fica no meio? Parece que clear basicamente ignora todos os parâmetros da linha de comando.

Eu pensei que haveria alguma maneira de fazer isso com tput , mas não é possível encontrar um.

    
por fizzyh2o 22.07.2016 / 03:11

3 respostas

11

Você pode usar tput para mover o cursor para uma determinada linha na tela, por exemplo,

tput cup 11 0

para movê-lo para a décima segunda linha (valores contados a partir de zero).

Na mesma linha, você pode usar tput para limpar dessa posição até o final da tela, usando o recurso ed . Combinando,

tput cup 11 0 && tput ed

pode ser o que se queria.

Se você quiser ir até a metade da marca na tela, o primeiro número retornado por

stty size

é (na maioria dos sistemas) o número de linhas da tela. Adicionando isso ao comando:

tput cup $(stty size|awk '{print int($1/2);}') 0 && tput ed

O programa clear difere de tput ed :

  • move o cursor para a posição home (canto superior esquerdo) e
  • desaparece desse ponto até o final da tela.
por 22.07.2016 / 03:16
0

Se a contagem de linhas for ímpar, então tput cup limpará a página inteira.
escrevê-lo assim deve corrigir isso:

tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed
    
por 31.08.2018 / 00:11
-1

Se você estiver interessado em limpar a metade da tela enquanto mantém o restante, isso funcionará:

half=$(stty size | awk '{print int($1/2);}'); for i in 'seq ${half}'; do echo '' ; done && tput cup ${half} 0 && tput ed
    
por 04.11.2018 / 13:30

Tags