Hizo un gato / dev / urandom - Terminal roto


31

Por curiosidad, cuando su conjunto de personajes de shell se rompe de hacer algo como cat /dev/urandom¿hay alguna manera de arreglar eso en su lugar?


66
Claro ... no hagas eso! Además, si cree que un comando puede producir caracteres no válidos, use cat -A.
jnylen

2
Además, siempre he tenido curiosidad por saber cómo catpuede romper tu conjunto de personajes ...
crasic

cat / bin / ls a menudo corrige esto (no estoy seguro de por qué)
skarface

2
@crasic: envía binarios al terminal, y cada terminal tiene formas de cambiar la fuente / color / etc. al recibir caracteres especiales. Vea lo maravilloso: linusakesson.net/programming/tty (también conocido como "el TTY desmitificado"). Dependiendo de su configuración de TÉRMINO, también reaccionará de manera diferente (y, por supuesto, dependiendo de qué bytes reciba y en qué orden).
Olivier Dulac

@skarface: probablemente tuvo suerte de que el binario de / bin / ls tuviera, cerca del final, secuencias de bytes que arreglaron la pantalla. Dependerá del sistema operativo, el binario (es decir, qué versión, qué compilación optino usó, etc.) y la configuración de TERM de su terminal ... así que le recomiendo que use "stty sane" en su lugar ^^
Olivier Dulac

Respuestas:


50

Pruebe uno de estos:

stty sane

o

reset

Si ambos no funcionan, o si su terminal está tan desordenada que ni siquiera puede ingresar comandos, entonces es mejor cerrar la terminal e iniciar una nueva.

Tenga en cuenta que stty saneestá definido por POSIX mientras resetque no lo está. Eso significa que en algunos sistemas puede que no haya una reseto que haga algo completamente diferente, como restablecer todo el sistema. Todavía no he encontrado un sistema sin reset.

Para obtener más información sobre antecedentes, lea el capítulo "Cómo usar el teclado y la consola de Linux" "Restablecimiento de su terminal" .


Te di la respuesta correcta porque fuiste el primero. Perdón por los otros.
Pedro Montoto García

En general, escribir bytes aleatorios en un terminal es poco probable que lo coloque en una situación que necesite ser reparada; es más probable que provenga de un bloqueo del programa.
Random832

stty sanees la forma segura y adecuada (estoy cansado de "reiniciar" por las razones que dije en los comentarios debajo de la respuesta de lain)
Olivier Dulac

1
@ OlivierDulac Gracias por compartir su experiencia. Investigué y aprendí quereset POSIX no lo define.
lesmana

1
@Iain No creo que @OlivierDulac esté difundiendo FUD. La referencia que resetno es "segura" es el hecho de que POSIX no la define. Deje de difundir el FUD que @OlivierDulac está difundiendo FUD.
lesmana

20

Puedes intentar usar el comando reset .


44
Vinculaste la página del manual, recomendando implícitamente un buen RTFM. Eres mi héroe hoy, gracias.
Luke404

Esto funciona en muchos Unixes ... Pero algunas palabras de advertencia: tenga cuidado: en algunos sistemas (es decir, otros sistemas operativos, o tal vez alguna otra distribución de Linux) esto podría estar iniciando un reinicio del sistema (creo que por ejemplo lo hace en algunas versiones de solaris). Por lo tanto, reiniciar el sistema, es decir, forzar un reinicio (sin un apagado adecuado) ... Al igual que con cualquier comando, tenga cuidado. (Esto también es cierto para otros comandos: algunos 'tar', por ejemplo, NO eliminan los prefijos "/" y, por lo tanto, pueden sobrescribir archivos confidenciales, etc. Siempre asegúrese de saber cómo funciona el comando que desea utilizar en el sistema que utiliza. están usando.)
Olivier Dulac

1
@OlivierDulac; El OP etiquetó su pregunta Linux para que obtuviera una respuesta Linuxcéntrica, aunque funcionará sin problemas en otros sistemas Unix, incluido Solaris. ¡Trabajé con Solaris durante 15 años! Está confundiendo el comando de reinicio de SPARC Open Boot Prom con el comando userland reset (1). Sin embargo, si emite el restablecimiento en el indicador ok, es poco probable que se recupere de un terminal dañado.
user9517 es compatible con GoFundMonica

@lain: ah, esto podría ser esto (Open Boot prom), de hecho. Pero aún así, significa que en algún entorno "restablecer" está vinculado a restablecer el host, por lo que prefiero que las personas (incluso si están "principalmente" en Linux) aprendan / usen el comando "seguro" "stty cuerdo" (que establece qué lo hace, y no es tan ambiguo como "restablecer") ... es por eso que estoy advirtiendo a los lectores sobre esto.
Olivier Dulac

@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD restablecen todos los enlaces a tset; proporcione evidencia de su información errónea además de recordar algo incorrectamente. OBP no es un sistema operativo host, por lo que no cuenta.
user9517 es compatible con GoFundMonica el

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.