Em referência a esta pergunta: /server/534449
Como cat /dev/urandom
alguns emuladores de terminal ficam esquisitos?
Em referência a esta pergunta: /server/534449
Como cat /dev/urandom
alguns emuladores de terminal ficam esquisitos?
Embora existam caracteres ASCII normais imprimíveis que são enviados e enviados em um terminal, também existem muitos caracteres não imprimíveis que são usados para o sistema se comunicar com o terminal. Por exemplo, se um programa envia o caractere 0x07
("caractere ASCII Bell"), seu terminal deve emitir um sinal sonoro.
Outras seqüências especiais podem ser usadas para alterar a cor do texto que está sendo exibido, qual direção é exibida, o título da janela, o tamanho da janela, etc., entre muitas outras coisas.
Quando você
cat /dev/urandom
Um monte de caracteres aleatórios são jogados no seu terminal, e o terminal não pode dizer que não são códigos de controle reais.
Como o programa está efetivamente enviando comandos aleatórios para o terminal, o terminal termina em um estado aleatório, geralmente inutilizável.
Algumas das saídas aleatórias serão códigos de escape ANSI ( http://en.wikipedia.org/wiki/ANSI_escape_code ), que podem fazer coisas divertidas, como ocultar o cursor ou selecionar fontes alternativas. Outra possibilidade são seqüências unicode: um bytestream aleatório não será válido UTF-8 e provavelmente nem todos os terminais sensíveis a unicode lidam com isso normalmente.
cat /dev/urandom
fornecerá um fluxo de bytes aleatórios entre 0
e 255
, nem todos esses valores são caracteres de texto válidos. Como a janela do terminal alimentava dados inválidos, nunca se esperava que ele pudesse lidar com isso, pois o aplicativo do terminal poderia ficar em um estado "quebrado".