2012-06-11 19 views
6

Girişteki tek karakterleri okuduğum bir bash komut dosyası yazıyorum. read -n 1 -s'u kullanarak yapıyorum. -n 1 sadece tek bir karakteri okumak içindir; -s, yazılan karakterlerin görünmeyeceği "sessiz" moddur.Yazılan karakterlerin görüntülenmesini engelle (termolarda "echo" özelliğini devre dışı bırakma gibi)

Sorun şu ki, çalıştırılan komut read (bash betiğindeki diğer bazı komutlar yürütüldüğünde) yapılmadığında, karakter terminalde görüntülenir.

Terminaldeki bir programın normal davranışı budur. Bunu devre dışı bırakmak için, normalde echo modunu, örneğin termios kütüphanesini kullanarak devre dışı bırakır.

Bunu bir bash komut dosyasında nasıl yapabilirim?

Saf bash/Unix komutlarında (python, perl vb. Başka betik dilleri olmadan) çözümleri tercih ederim.

cevap

14
stty -echo 
# Anything they type won't output here 
stty echo 
# Now it will 
+1

Evet. Bu hızlı oldu :) Teşekkürler! (12 dakikada kabul edebilirim.) – leemes