Bu bir zamanlama meselesidir: bash hello
komutu arka planda başlatır , ardından yeni bir komut girmenize izin vermek için bir komut istemi görüntüler, ardından background komutu bazı çıktılar yazdırır. Bir sonraki komut satırını (boş bir komut satırı, yalnızca düğmesine basarsanız Enter) girdiğinizde , bash arka plan işinin bittiğine dair bildirimi, ardından bir sonraki istemi görüntüler.
sleep 3
Takip edebileceğiniz bir hızda neler olduğunu görmek için, komut dosyasını arka planda başlattıktan hemen sonra başlayan ve yazmaya başlayan bir komut dosyasını denemek isteyebilirsiniz .
notify
Seçeneği ayarlayarak bir arka plan işi sona erdiğinde bash'ı hemen bilgilendirebilirsiniz set -b
. Sonra göreceksiniz:
$ set -b
$ hello &
[1] 12345
$ hello world!
[1]+ Done
Bash bu durumda istemi yeniden çizmez. Hala arka plan işi yazdırılmadan önce görüntülenen bilgi istemi satırında bir komut satırı düzenliyorsunuz hello world!
. Esc 1 Ctrl+ Düğmesine basarak geçerli satırı yeniden çizebilirsiniz L. Komutu redraw-current-line
daha uygun bir anahtara bağlamak isteyebilirsiniz ; örneğin, geçerli satırı Ctrl+ Lyeniden çizmek ve Ctrl+ Alt+ Lekranı temizlemek için şu satırları ekleyin ~/.inputrc
:
"\C-l": redraw-current-line
"\e\C-l": clear-screen
Bash istemi satırını otomatik olarak yeniden çizmenin bir yolunu bilmiyorum. Zsh bunu varsayılan olarak yapar.