"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, hikomut olarak çalıştırmayı denemez. Sadece imleç isteminizde iken arka plan echobasılmış hi.
Belki de öncü bir yeni satır yazdırmak istersiniz (sleep 1m && echo -e '\nhi' &). ( echoKabuğunuzdaki için gerektiği gibi ayarlayın . Veya printftaşı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 sleepEğ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 echobittikten . 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 checkwinsizeiki 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_COMMANDayarlanan 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, lesskolayca ö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 &)
echoAçık olan yeni bir xterm / konsole / gnome-terminali açmak isteyebilirsiniz . Komut çıktıktan sonra terminali açık tutan bir seçenek kullanın.