O método \ 033 não funcionou para mim. O método \ r funciona, mas na verdade não apaga nada, apenas coloca o cursor no início da linha. Portanto, se a nova string for mais curta do que a antiga, você poderá ver o texto restante no final da linha. No final das contas, tput foi o melhor caminho a seguir. Ele tem outros usos além do cursor e vem pré-instalado em muitas distros Linux e BSD, então deve estar disponível para a maioria dos usuários do bash.
#/bin/bash
tput sc # save cursor
printf "Something that I made up for this string"
sleep 1
tput rc;tput el # rc = restore cursor, el = erase to end of line
printf "Another message for testing"
sleep 1
tput rc;tput el
printf "Yet another one"
sleep 1
tput rc;tput el
Aqui está um pequeno script de contagem regressiva para brincar:
#!/bin/bash
timeout () {
tput sc
time=$1; while [ $time -ge 0 ]; do
tput rc; tput el
printf "$2" $time
((time--))
sleep 1
done
tput rc; tput ed;
}
timeout 10 "Self-destructing in %s"
for i in {1..100000}; do echo -en "\r$i"; done
para evitar a chamada de