Selain \r
atau \b
pendekatan, dimungkinkan untuk menggunakan \033[2K
karakter kontrol , yang memberitahu terminal untuk menghapus seluruh baris. Keuntungan dari ini dibandingkan \b
adalah bahwa Anda tidak harus mencocokkan jumlah \b
dengan jumlah karakter yang ingin Anda hapus, dan dibandingkan dengan itu \r
tidak akan ada karakter yang mencuat di layar jika baris baru lebih pendek daripada yang lama satu.
Di bawah ini adalah contoh bagaimana hal itu dapat diterapkan pada pertanyaan ini, dan di sini adalah contoh aplikasi terkait untuk membuat output yang mirip dengan pesan boot. Dalam contoh khusus ini, timer akan hilang begitu 0 detik tercapai dan garis timer akan diganti dengan "Siap!" frasa.
#!/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!"
Alternatif lain adalah menggunakan dialog
perintah untuk membuat dialog sederhana di command-line. Dialog akan tetap di layar selama durasi timer dan diperbarui dengan loop, dan pada saat itu selesai - timer akan diganti dengan pesan "Ready! Tekan untuk keluar" dengan cara yang mulus:
#!/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
perintah, meskipun saya tidak yakin bagaimana melakukannya.