Phương thức \ 033 không hoạt động với tôi. Phương thức \ r hoạt động nhưng nó không thực sự xóa bất cứ thứ gì, chỉ đặt con trỏ ở đầu dòng. Vì vậy, nếu chuỗi mới ngắn hơn chuỗi cũ, bạn có thể thấy phần văn bản còn sót lại ở cuối dòng. Cuối cùng thì tput là cách tốt nhất để đi. Nó có các công dụng khác ngoài công cụ con trỏ cộng với nó được cài đặt sẵn trong nhiều bản phân phối Linux & BSD nên nó sẽ có sẵn cho hầu hết người dùng 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
Đây là một tập lệnh đếm ngược nhỏ để chơi với:
#!/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
để tránh cuộc gọi seq :-)