Además de \r
o se \b
acerca, es posible usar el \033[2K
carácter de control , que le dice al terminal que limpie toda la línea. La ventaja de esto en comparación con \b
es que no tiene que hacer coincidir el número \b
con la cantidad de caracteres que desea eliminar, y en comparación \r
no habrá caracteres sobresaliendo en la pantalla si la nueva línea es más corta que la anterior uno.
A continuación se muestra el ejemplo de cómo se puede aplicar a esta pregunta, y aquí hay un ejemplo de la aplicación relacionada para crear resultados similares a los mensajes de arranque. En este ejemplo en particular, el temporizador desaparecerá una vez que se alcance el segundo segundo y la línea del temporizador se reemplazará con "¡Listo!" frase.
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
printf "One moment please: %d" "$sek"
sleep 1
printf "\r%b" "\033[2K"
done
echo "Ready!"
Otra alternativa sería emplear el dialog
comando para crear cuadros de diálogo simples en la línea de comandos. El cuadro de diálogo permanecerá en la pantalla mientras dure el temporizador y se actualizará con el bucle, y para cuando termine, el temporizador se reemplazará con el mensaje "¡Listo! Presione para salir" de manera transparente:
#!/bin/bash
sek=60
echo "60 Seconds"
while ((sek--)); do
echo "$sek" | dialog --progressbox "Please wait" 10 25
sleep 1
done
dialog --msgbox "Ready! Press <OK> to finish" 10 25
watch
comando, aunque no estoy seguro de cómo hacerlo.