¿Cómo restablecer un TTY roto?

15

Mi Slackware TTY se puede romper fácilmente ejecutando:

cat some_binary_file

Después del comando, el TTY completo ya no mostrará caracteres legibles, pero aún así responde a los eventos del teclado.

Incluso si cierro la sesión y vuelvo a iniciar sesión, el TTY sigue sin funcionar y ya no muestra caracteres legibles. Debo reiniciar la máquina para restaurar el funcionamiento normal de TTY.

¿Existe alguna solución sin reiniciar toda la máquina?

Howard
fuente

Respuestas:

13

Corre echo ^v^o, es decir echoy luego Ctrl-vy luego Ctrl-o, Enter. No verás el Ctrl-v. Se mostrará como echo ^O. Ctrl-vlo configura en modo detallado, pasando por los caracteres de control, y Ctrl-oreiniciará el terminal.

Florian
fuente
44
Solo una breve pista: si el TTY es completamente inutilizable o una consola de registro, puede restablecerlo fácilmente desde cualquier otro TTY echo ^v^o > /dev/ttyNdonde N sea el número del terminal.
Torben
Esto no funciona para mí en MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ed Randall
25

Por lo general, la ejecución resetrestablece el terminal. Sin .inputrcembargo, algunas combinaciones de teclas podrían perderse.

choroba
fuente
Solución súper simple que reparó mi panel tmux oh-my-zsh bloqueado.
Shadoninja
Esto es mejor que la respuesta aceptada en mi opinión. Cuando no puede ver lo que está escribiendo, es más fácil escribir resety presionar enter que intentar usar combinaciones de teclas, además, funciona el 100% de las veces.
Sergio
12

Puede probar el comando de reinicio ANSI:

printf "\033c"
jlliagre
fuente
este es el único que funcionó en OpenBSD 5.4
execSiguiente
1
Esto también funcionó desde el shell (bash) como echo -e '\ 033c'
Ed Randall
3
@EdRandall Sí. Tenga en cuenta que "echo -e" no es compatible con todos los shells mientras que printftiene la ventaja de ser portátil, por lo que funciona independientemente del shell, incluido bash.
jlliagre
Me imagino que esto no tiene nada que ver con la gaviota diacrítica en IPA. U + 033C <◌> \ {N} GAVIOTA COMBINACIÓN DE ABAJO
Trig
@TRiG De hecho. Nada que ver con la famosa cita de Eric Cantona. ;-)
jlliagre
5

Mi terminal no mostraba ningún carácter que escribí. Ninguno de los otros trucos funcionó. Este funciona:

stty sane

Trabajó para mi. A veces tengo un terminal en un estado que no responde, pero ninguna de las otras sugerencias podría devolverme la salida. Las otras sugerencias que probé, pero no funcionaron:

echo ^v^o
reset
printf "\033c"

Fuente: /unix//a/79686/53236

Jesper Rønn-Jensen
fuente
0

En realidad, hay algunos problemas potenciales, y podría tener que ver con su entorno. En primer lugar, como respondió @Jesper, quieres hacerlo stty sane. Sin embargo, es posible que ni siquiera pueda configurar el entorno correctamente con eso.

Esto se debe a la diferencia entre /bin/bashy /bin/sh. Al abrir su tty, corra /bin/bashy luego intente stty sane. Esto debería arreglarlo todo. Finalmente, recomiendo agregar tal cosa a .bashrc

Otra opción sería instalar un software seguro.

usuario2262111
fuente