Fiz um cat / dev / urandom - Terminal quebrado

31

Por curiosidade, quando seu conjunto de caracteres shell deixa de fazer algo como cat /dev/urandom: existe uma maneira de consertar isso?

Pedro Montoto García
fonte
6
Claro ... não faça isso! Além disso, se você acha que um comando pode produzir caracteres inválidos, use cat -A.
jnylen
2
Além disso, eu sempre fui curioso como catpode quebrar seu conjunto de caracteres ...
crasic
cat / bin / ls frequentemente corrige esse (não sei porquê)
skarface
2
@crasic: envia binário para o terminal, e cada terminal tem maneiras de mudar de fonte / cor / etc, recebendo caracteres especiais. Veja o maravilhoso: linusakesson.net/programming/tty (também conhecido como "o TTY desmistificado). Dependendo da configuração do TERM, ele também reagirá de maneira diferente (e, é claro, dependendo dos bytes que recebe e em que ordem).
Olivier Dulac
@ skarface: você provavelmente teve sorte de o binário de / bin / ls ter, quase no final, sequências de bytes que consertavam a tela. Vai depender do sistema operacional, do binário (ou seja, qual versão, qual compilador optino usou, etc.) e da configuração TERM do seu terminal ... por isso, recomendo que você use "stty sane" em vez disso ^^
Olivier Dulac

Respostas:

50

Experimente um destes:

stty sane

ou

reset

Se os dois não funcionarem, ou se o seu terminal está tão bagunçado que você nem consegue digitar comandos, é melhor fechar o terminal e iniciar um novo.

Observe que stty saneé definido pelo POSIX, enquanto resetnão é. Isso significa que em alguns sistemas pode não haver um resetou pode fazer algo completamente diferente, como redefinir todo o sistema. Ainda não encontrei um sistema sem reset.

Para obter mais informações, leia o "COMO FAZER o teclado e o console Linux", capítulo "Reinicializando o seu terminal" .

lesmana
fonte
Eu lhe dei a resposta certa, porque você foi a primeira. Desculpe aos outros.
Pedro Montoto García 28/08
Em geral, é improvável que escrever bytes aleatórios em um terminal o coloque em uma situação que precise de correção séria; é mais provável que venha de um programa que trava.
precisa saber é o seguinte
stty saneé a maneira segura e adequada (Estou cansado de "reset" pelas razões que indicado nos comentários debaixo de resposta deitado)
Olivier Dulac
11
@OlivierDulac Obrigado por compartilhar sua experiência. Eu pesquisei e aprendi que resetnão é definido pelo POSIX.
Lesmana
11
@Iain Eu não acho que @OlivierDulac está espalhando FUD. A referência que resetnão é "segura" é o fato de não ser definida pelo POSIX. Pare de espalhar o FUD que @OlivierDulac está espalhando o FUD.
Lesmana
20

Você pode tentar usar o comando reset .

user9517 suporta GoFundMonica
fonte
4
Você vinculou a página de manual, recomendando implicitamente um bom RTFM. Você é meu herói hoje, obrigado.
Luke404
Isso funciona em muitos unixes ... Mas alguma palavra de aviso: tenha cuidado: em alguns sistemas (ou seja, em outros sistemas operacionais ou talvez em alguma outra distribuição do linux?), Isso pode estar iniciando uma redefinição do sistema (acredito que, por exemplo, em algumas versões do solaris). Portanto, redefinindo o sistema, ou seja, forçando uma reinicialização (sem desligamento adequado) ... Como em qualquer comando, tenha cuidado. (Isso também é válido para outros comandos: alguns 'tar', por exemplo, NÃO removem prefixos "/" e, portanto, podem sobrescrever arquivos confidenciais, etc. Sempre verifique se você sabe como o comando que pretende usar funciona no sistema que você usa. está usando).
Olivier Dulac
11
@OlivierDulac; O OP marcou sua pergunta como linux, então ele obteve uma resposta centrada em linux, embora funcione em outros sistemas unix, incluindo Solaris sem problemas. Eu trabalhei com Solaris por 15 anos! Você está confundindo o comando SPARC Open Boot Prom reset com o comando userland reset (1). Se você executar a redefinição no prompt ok, é improvável que você esteja se recuperando de um terminal corrompido.
user9517 suporta GoFundMonica
@ain: ah, isso poderia ser isso (baile de inicialização aberta), de fato. Mas ainda assim, em alguns ambientes, "reset" está vinculado à redefinição do host, então eu prefiro que as pessoas (mesmo que sejam "principalmente" no linux) aprendam / usem o comando "safe" "stty sane" (que indica o que faz, e não é tão ambíguo como "reset") ... é por isso que estou avisando os leitores sobre isso.
Olivier Dulac
@OlivierDulac Solaris, CentOS, Ubuntu, OpenBSD, todos os links são redefinidos para tset - forneça evidências de suas informações erradas que não lembrem de algo. O OBP não é um SO host, portanto não conta.
user9517 suporta GoFundMonica
11

O resetcomando deve funcionar.

Changaco
fonte