Öncelikle sorunuzun bash ile ilgisi yok, terminal ile ilgisi var. Terminal, programların metnini görüntülemek için yanıt veriyor ve bash başlatıldıktan sonra programlar üzerinde hiçbir kontrol sahibi değil.
Terminaller, rengi, yazı tipini, imleç konumunu ve daha fazlasını kontrol etmek için kontrol sekansları sunar. Standart hale getirilmiş terminal dizilerinin bir listesi için http://www.termsys.demon.co.uk/vtansi.htm adresine bakınız.
Örneğin
- imleci satırın başına getir
- sonradan satırı sil
- yeni bir satır yaz
bir ilerleme çubuğu oluşturmak için.
Daha gelişmiş terminal kaçış dizileri tipik olarak terminale bağlıdır, örneğin sadece Eterm veya xterm ile çalışır. ncurses - terminal ile etkileşimli programlar yaratan bir programlama kütüphanesidir, bu nedenle kaçış dizilerini kullanmak zorunda kalmazsınız.
Terminal dizileri ile mevcut bir hattın üzerine yazma
echo long text
sleep 1
printf "\033[1A" # move cursor one line up
printf "\033[K" # delete till end of line
echo foo
Terminal sırası olmayan mevcut bir hattın üzerine yazma
Basit bir çözüm, sonunda yeni bir satır yazmak değil, imleci temelde satırın başına ayarlayan satır başı yazmaktır, örneğin:
echo -n first
sleep 1
echo -ne "\rsecond"
echo
\r
Veya satır başı satırın başında imleci koymak ve hattın içeriğin üzerine sağlar olacaktır.
less
Veya gibi tamponlar arasında geçiş yapvi
Davranışı less
, alternatif ekranın daha gelişmiş bir terminal özelliği nedeniyle de ortaya çıkar:
VT102 modunda, pencerenin gösterim alanıyla aynı boyutta olan alternatif bir ekran tamponunu etkinleştirmek ve devre dışı bırakmak için kaçış dizileri vardır. Etkinleştirildiğinde, geçerli ekran kaydedilir ve alternatif ekranla değiştirilir. Kaydırılan çizgilerin kaydedilmesi, normal ekran geri yüklenene kadar pencerenin üst kısmından çıkar. Xterm için ‐ cap (5) girişi, görsel düzenleyicinin vi (1) düzenleme için alternatif ekrana geçmesini ve çıkışta ekranı geri yüklemesini sağlar. Bir açılır menü girişi, kesme ve yapıştırma için normal ve alternatif ekranlar arasında geçiş yapmayı kolaylaştırır.
http://rosettacode.org/wiki/Terminal_control/Preserve_screen , tput veya bazı kaçış dizileriyle nasıl yapılacağını gösteren bazı örnekleri listeler .