2012-06-11 11 views
6

Sto scrivendo uno script di bash in cui leggo singoli caratteri dall'input. Lo faccio utilizzando read -n 1 -s. -n 1 è di leggere solo un singolo carattere; -s è la modalità "silenziosa", in cui i caratteri digitati non saranno visibili.Impedire la visualizzazione di caratteri digitati (come disabilitare l'attributo "echo" nei termios)

Il problema è che quando il comando attualmente eseguito non è read (ogni volta che vengono eseguiti altri comandi nello script di bash), il carattere viene visualizzato nel terminale.

Questo è il normale comportamento di un programma nel terminale. Per disabilitare questo, normalmente si disabilita la modalità echo, ad esempio utilizzando la libreria termios.

Come posso ottenere questo risultato in uno script bash?

Preferisco soluzioni in puro comando bash/Unix (senza altri linguaggi di scripting come python, perl ecc.).

risposta

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

Sì. E 'stato veloce :) Grazie! (Posso accettare in 12 minuti.) – leemes