Supondo que o clear
realmente limpe a tela, o script mostrado, por si só, não produzirá a primeira captura de tela. Se você tivesse um processo adicional que fosse anexado a /tmp/temp_script.log
, então isso poderia fazer alguma coisa ...
Por outro lado, se o seu terminal não está limpando a tela, isso faz parte do problema. Talvez essa linha colorida seja o prompt a partir do qual você executou o script, e você pode querer mantê-lo na parte superior da tela:
- normalmente você definiria
TERM
como um valor adequado que corresponde a uma descrição do terminal. - uma descrição do terminal "adequada" informa como limpar a tela.
- como efeito colateral, limpar a tela (por convenção) também move o cursor para o canto superior esquerdo da tela, mas
- limpar a tela do canto superior esquerdo da tela também limparia a linha colorida (que você pode deseja manter)
- se você quiser limpar da segunda linha, você pode (na maioria dos terminais) fazer
printf '3[2H3[J'
ou
tput cup 1 0 tput ed
- mas lembre-se de que, se seu prompt originalmente não estava na parte superior da tela, isso deixaria o que estava na parte superior da tela intocada.
A outra parte do problema é que as três linhas são impressas repetidamente, descendo a tela. Você pode alterar isso para mover o cursor onde deseja imprimir o contador, por exemplo,
printf '3[4H'
ou
tput cup 3 0
Juntando tudo isso, seu script pode ficar assim (e usando printf
, já que algo parece estar errado com a descrição de TERM
e / ou terminal):
#!/bin/bash if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi #result='sensors -A' count=0 printf '3[2H3[J' keypress='' echo "linha 1" echo "Linha 2 while [ "x$keypress" = "x" ]; do let "count++" printf '3[4H' echo $count sleep 1 keypress="'cat -v'" done if [ -t 0 ]; then stty sane; fi exit 0
Leitura adicional: