Mi problema es que el shell Bash deja de mostrar los caracteres que escribo en él. Sin embargo, sí lee los comandos.
Me he encontrado con este problema varias veces y no entiendo qué lo causa. Sé cómo resolverlo, pero realmente no me gusta cuando estoy "vudú" mi forma de salir de problemas.
Describiré las dos formas en que me he encontrado con este problema:
Estoy ejecutando un cierto proceso, http://pythonpaste.org/script/ y, a veces, cuando lo detengo o se rompe, el control se devuelve al shell. Cuando luego voy y escribo comandos en el shell, los caracteres que escribo no aparecen. Cuando presiono enter se envían los comandos . Así por ejemplo:
- Escribo "ls"
- Solo veo un mensaje vacío y nada más
- Presiono enter y me dan una lista de los archivos, en otras palabras: el comando se ejecuta
- cuando doy el comando "reset" el shell comienza a funcionar normalmente de nuevo
La segunda forma en que esto sucede es cuando doy un comando como este:
$ grep foo * -l | xargs vim
Utilizo grep para buscar archivos que tengan un cierto patrón y luego quiero abrir todos los archivos que resultan del grep. Esto funciona a las mil maravillas (aunque no tan rápido como esperaba). Pero cuando salgo de Vim, mi shell deja de mostrar los caracteres que escribo en él. Un comando de reinicio resuelve el problema.
Supongo que ambos problemas tienen una razón subyacente, pero estoy un poco perplejo sobre cómo o cuál es esa razón.
La búsqueda de este problema es problemática en sí misma porque la descripción es algo vaga y no tiene términos de búsqueda difíciles.
Editar
Dando el
stty --all
El comando según la solicitud de John S. Gruber dio el siguiente resultado (espacios en blanco editados para facilitar la lectura)
speed 0 baud;
rows 53;
columns 186;
line = 0;
intr = <undef>;
quit = <undef>;
erase = <undef>;
kill = <undef>;
eof = <undef>;
eol = <undef>;
eol2 = <undef>;
swtch = <undef>;
start = <undef>;
stop = <undef>;
susp = <undef>;
rprnt = <undef>;
werase = <undef>;
lnext = <undef>;
flush = <undef>;
min = 0;
time = 0;
-parenb
-parodd cs8
-hupcl
-cstopb cread
-clocal
-crtscts
-ignbrk
-brkint
-ignpar
-parmrk
-inpck
-istrip
-inlcr
-igncr
-icrnl
-ixon
-ixoff
-iuclc
-ixany
-imaxbel
-iutf8
-opost
-olcuc
-ocrnl
-onlcr
-onocr
-onlret
-ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig
-icanon
-iexten
-echo
-echoe
-echok
-echonl
-noflsh
-xcase
-tostop
-echoprt
-echoctl
-echoke
stty --all
mi pregunta. ¡Gracias por adelantado!
stty --all
y ponga los resultados en su pregunta. El eco es una característica tty que se está apagando. Vim hará esto mientras se está ejecutando, y también pondrá el terminal en modo sin procesar. Cuando se cierra, debe restablecer la configuración del terminal. Cuando vim se está ejecutando, no desea repetir eli
comando que pone al editor en modo de inserción, por ejemplo. Esta configuración le dice al dispositivo tty cómo debe procesar lo que escribe. Mientras vim se está ejecutando, se encarga de hacer eco de lo que debería repetirse, etc.