Sometimes in Bash, you want to display some text in the console and sometimes you may also want to have the ability to overwrite the line that you have just displayed with a new string.

For example, a bash script could display a text “Working..” on the console and then, instead of display “Finished!” to the next line, you want the line that first display “Working…” be cleared and replace with the “Finished!” string.

Here is a little piece of code that could do this:

tput sc
echo -n “Working…”
for i in `seq 1 5000`;
echo $i > \dev\null
tput el1
tput rc
echo “Finished!”

Update There's actually a simpler way:

for i in `seq 1 5000`; do
    echo $i > /dev/null               # do some processing
    echo -n -e "working $i\x0d"
On 20 August 2010