"Merhaba" akışı istemimde (içinde stdin
) yazdırılır ve benimstdout
Hayır, var olmayan "senin basılan stdin
".
Return tuşuna basarsanız, hi
komut olarak çalıştırmayı denemez. Sadece imleç isteminizde iken arka plan echo
basılmış hi
.
Belki de öncü bir yeni satır yazdırmak istersiniz (sleep 1m && echo -e '\nhi' &)
. ( echo
Kabuğunuzdaki için gerektiği gibi ayarlayın . Veya printf
taşınabilirlik için kullanın .)
Ben &
arka plan iş "reddetmek" için alt kabuk içine koymak , böylece de "gürültü" önlemek [1]+ Done
. İle &&
komutları arasında, &
o beklemekten uzak yerine kabuk istemi sağa döner, böylece bütün bileşik-komuta zincirine geçerlidir sleep
Eğer alacağınız gibi çıkmak için(sleep 1; echo ... &)
İşte olacaklar (1 saniye gecikmeyle):
peter@volta:~$ (sleep 1 && echo -e '\nhi' &)
peter@volta:~$
hi
# cursor is at the start of this empty line.
Bash bir echo
şey yazdırdığını bilmiyor , bu yüzden istemini yeniden yazdırması veya ekranı temizlemesi gerektiğini bilmiyor. Bunu elle yapabilirsiniz control-L
.
Bir kabuk işlevi yazabilirsiniz için bash alır sonra istemi yeniden yazdırmak echo
bittikten . Sadece yapmak echo "$PS1"
zaten yazılan karakterleri yeniden üretmez. kill -WINCH $$
sistemimde bash, ekranı temizlemeden bilgi istemi satırını yeniden yazdırır ve bilgi isteminden hi
önce kendi başına bir satırda kalır . SIGWINCH, WINdow boyutu değiştiğinde otomatik olarak gönderilir ve bash'ın yanıtı istediğimizi yapar.
Diğer mermilerle çalışabilir, ancak bunu% 100 taşınabilir / POSIX yapmaya çalışmıyorum. ( Ne yazık ki, bu sadece bash4.3 üzerinde değil, bash4.4 üzerinde çalışır veya farkında olmadığım bazı ayarlara bağlıdır )
# bash4.4
peter@volta:~$ (sleep 2 && echo -e '\nhi' && kill -WINCH $$ &)
peter@volta:~$ ljlksjksajflasdf dfas # typed in 2 seconds
hi
peter@volta:~$ ljlksjksajflasdf dfas # reprinted by Bash because of `kill -WINCH`
Bunu kolayca bir uyku bağımsız değişkeni ve bir mesaj alan bir kabuk işlevinde tamamlayabilirsiniz.
bash 4.3, SIGWINCH'den sonra istemini yeniden yazdırmaz, bu yüzden orada çalışmaz. Her shopt -s checkwinsize
iki sistemi de etkinleştirdim, ancak sadece Bash 4.4 sisteminde çalışıyor (Arch Linux).
Öyle değil çalışır ise, deneyebilirsin (sleep 2 && echo -e '\nhi' && echo "$PS1" &)
hangi "eserler" komut satırı boş ise,. (Ayrıca PROMPT_COMMAND
ayarlanan olasılığı da yok sayar .)
Daha sonra, zamanlayıcı tetiklendiğinde terminalinizde ne yaparsanız yapın terminal çıkışını karıştırmak için gerçekten temiz bir yol yoktur. Bir şeyi kaydırmanın ortasındaysanız, less
kolayca özleyebilirsiniz.
Etkileşimli sonuçlara sahip bir şey arıyorsanız, bir ses dosyası oynatmanızı öneririm. örneğin mpv
(MPlayer2'nin güzel çatalı) gibi bir komut satırı oynatıcısı ile . Veya yeni bir pencere açılacak şekilde bir video dosyası seçin.
(sleep 1 && mpv /f/share/music/.../foo.ogg </dev/null &>/dev/null &)
echo
Açık olan yeni bir xterm / konsole / gnome-terminali açmak isteyebilirsiniz . Komut çıktıktan sonra terminali açık tutan bir seçenek kullanın.