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.