Respostas:
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 (os valores contam de zero).
Na mesma linha, você pode usar tput
para limpar essa posição até o final da tela, usando o ed
recurso Combinando,
tput cup 11 0 && tput ed
pode ser o que se queria.
Se você quiser ir para a marca intermediária 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 clear
programa difere de tput ed
:
Advertência: em algumas plataformas, tput ed
pode não funcionar devido a problemas corrigidos há muito tempo. Nesses casos, atualizar a configuração de maldições / ncurses corrigirá o problema.
Se a contagem de linhas for ímpar, tput cup
a página inteira será limpa.
escrevê-lo assim deve corrigir isso:
tput cup $(($(stty size|awk '{print $1}')/2)) 0 && tput ed
Se você estiver interessado em limpar a metade inferior da tela enquanto mantém o restante, isso funcionará:
half=$(stty size | awk '{print int($1/2)-1;}'); for i in `seq ${half}`; do echo '' ; done && tput cup ${half} 0 && tput ed
EDIT: Para esclarecer, se você executar seq $(stty size | cut -d' ' -f1)
as outras respostas sairá da primeira metade da saída, enquanto este comando sairá da segunda metade (ou seja, a saída mais recente).