O terminal aceita e executa várias seqüências de caracteres diferentes como comandos de controle. Por exemplo, todo o movimento do cursor é feito usando esses. Alguns dos códigos fazem alterações permanentes, como definir cores ou dizer ao terminal para usar um conjunto de caracteres alternativo. Os executáveis e outros arquivos binários podem conter bytes que representam esses comandos; portanto, o descarte de arquivos binários no terminal pode ter efeitos colaterais irritantes. Veja, por exemplo, aqui para alguns dos códigos de controle.
O pano de fundo histórico disso é que, originalmente, os terminais eram dispositivos bastante burros, com uma tela e um teclado , e se conectavam ao computador real por uma porta serial. Antes disso, eram impressoras com teclados. Não havia muito protocolo para separar os bytes de dados dos bytes de comando; portanto, os comandos foram dados ao terminal "inline". (Ou melhor, os códigos de escape e os caracteres de controle eram o protocolo.) Pode-se supor que, se o sistema fosse desenvolvido hoje, haveria uma separação mais clara entre dados e comandos.
Em vez de simplesmente fechar a janela do terminal ou interromper o emulador, você pode usar o reset
comando , que envia um comando semelhante (ou vários) para redefinir o terminal de volta aos padrões saudáveis.
Não sei exatamente o que causaria a alteração do hash. (Mas o @ Random832 faz, veja a resposta deles .) Estou mais familiarizado com o "conjunto de caracteres alternativo", que pode transformar todos os caracteres em glifos de desenho de linha. Mesmo que isso aconteça, a entrada do teclado geralmente permanece inalterada; portanto, a escrita reset
Enterainda funciona mesmo que os caracteres sejam exibidos como lixo ou não sejam exibidos. (Comparado com o prompt sendo transformado em várias linhas, você só tem um efeito menor.)