You can use -n
flag with echo
:
for a in {5..0}; do echo -n $a; sleep 1; echo -ne \\b; done
Or just use printf
:
for a in {5..0}; do printf $a; sleep 1; printf \\b; done
Note that this will show invalid numbers if counting from numbers greater or equal to 10
. You could use \r
carriage return character and clear the line with space, for example assume maximum number of 20 digits and use left formatting and fill the line with spaces:
for a in {20..0}; do printf "\r%-20d" "$a"; sleep 1; done
With bash COLUMNS
variable and with *
parameter passed width specifier with printf
you could fill the whole line with spaces:
for a in {20..0}; do printf "\r%-*d" "$COLUMNS" "$a"; sleep 1; done
Or use a ansi escape sequence to clear the line:
for a in {20..0}; do printf "\r\033[K%d" "$a"; sleep 1; done