GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué `cat /dev/urandom` rompe tu terminal?

Si bien hay caracteres ASCII normales e imprimibles que se envían de un lado a otro en una terminal, también hay muchos caracteres no imprimibles que se utilizan para que el sistema se comunique con la terminal. Por ejemplo, si un programa envía el carácter 0x07 ("carácter ASCII Bell"), su terminal debería emitir un pitido.

Se pueden usar otras secuencias especiales para cambiar el color del texto que se muestra, en qué dirección se muestra, el título de la ventana, el tamaño de la ventana, etc., entre muchas otras cosas.

Cuando tu

cat /dev/urandom

Se descargan un montón de caracteres aleatorios en su terminal, y el terminal no puede decir que no son códigos de control reales.

Debido a que el programa está enviando efectivamente comandos aleatorios a la terminal, la terminal termina en un estado aleatorio, a menudo inutilizable.


Algunos de los resultados aleatorios serán códigos de escape ANSI (http://en.wikipedia.org/wiki/ANSI_escape_code), que pueden hacer cosas divertidas como ocultar el cursor o seleccionar fuentes alternativas. Otra posibilidad son las secuencias Unicode:un flujo de bytes aleatorio no será UTF-8 válido, y probablemente no todos los terminales compatibles con Unicode lo manejen correctamente.


Linux
  1. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  2. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  3. ¿Cómo codificar en base64 /dev/random o /dev/urandom?

  4. ¿Por qué find -exec mv {} ./target/ + no funciona?

  5. pantalla No se puede abrir su terminal '/dev/pts/0' - verifique

¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

¿Cuándo usar /dev/random Vs /dev/urandom?

Linux:¿Qué significa la letra 'u' en /dev/urandom?

¿Por qué dd de /dev/random da diferentes tamaños de archivo?

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

¿Por qué se requieren < o > para usar /dev/tcp?