2012-06-11 15 views
6

Estoy escribiendo un script bash en el que leo caracteres individuales de la entrada. Lo hago usando read -n 1 -s. -n 1 es para leer solo un caracter; -s es el modo "silencioso", en el que los caracteres escritos no serán visibles.Evitar que se muestren caracteres escritos (como la desactivación del atributo "echo" en termios)

El problema es que cuando el comando ejecutado actualmente no es read (siempre que se ejecuten otros comandos en el script bash), el carácter se muestra en el terminal.

Este es el comportamiento normal de un programa en la terminal. Para desactivar esto, normalmente se desactiva el modo de eco, por ejemplo, usando la biblioteca de termios.

¿Cómo puedo lograr esto en un script bash?

Prefiero soluciones en comandos puros bash/Unix (sin otros lenguajes de scripting como python, perl, etc.).

Respuesta

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

Sí. Eso fue rápido :) ¡Gracias! (Puedo aceptarlo en 12 minutos) – leemes

Cuestiones relacionadas