Respostas:
Você pode usar tputpara 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 tputpara limpar essa posição até o final da tela, usando o edrecurso 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 clearprograma difere de tput ed:
Advertência: em algumas plataformas, tput edpode 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 cupa 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).