Como redefinir um TTY quebrado?


15

Meu Slackware TTY pode ser quebrado facilmente executando:

cat some_binary_file

Após o comando, o TTY inteiro não exibirá mais caracteres legíveis, mas ainda responderá a eventos do teclado.

Mesmo se eu sair e entrar novamente, o TTY ainda está quebrado e não mostra mais caracteres legíveis. Preciso reiniciar a máquina para restaurar a operação TTY normal.

Existe uma solução sem reiniciar a máquina inteira?

Respostas:


13

Execute echo ^v^o, ou seja, echoe então Ctrl-ve Ctrl-o, em seguida , Enter. Você não verá o Ctrl-v. Será exibido como echo ^O. Ctrl-vdefine-o no modo detalhado, passando pelos caracteres de controle, e Ctrl-oredefinirá o terminal.


4
Apenas uma pequena dica: se o TTY for completamente inutilizável ou um console de registro, você poderá redefini-lo facilmente a partir de qualquer outro TTY, echo ^v^o > /dev/ttyNonde N seja o número do terminal.
Torben

Isso não funciona para mim no MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ed Randall

25

Normalmente, a execução resetredefine o terminal. Algumas ligações de teclas .inputrcpodem ser perdidas, no entanto.


Solução super simples que corrigiu meu painel tmux oh-my-zsh com falha.
Shadoninja

Isso é melhor do que a resposta aceita na minha opinião. Quando você não consegue ver o que está digitando, é mais fácil digitar resete pressionar enter do que tentar usar combinações de teclas, além disso, ele funciona 100% das vezes.
Sergio

12

Você pode tentar o comando de redefinição ANSI:

printf "\033c"

este é o único que trabalhou no OpenBSD 5.4
execPróximo 1/14

1
Isso também trabalhou a partir do shell (bash) como echo -e '\ 033c'
Ed Randall

3
@EdRandall Sim. Observe que "echo -e" não é suportado por todos os shells, enquanto printftem a vantagem de ser portátil, portanto funciona com qualquer shell, incluindo o bash.
jlliagre

Imagino que isso não tenha nada a ver com a gaivota diacrítica no IPA? U + 033C ‹\› \ N {COMBINANDO A GAIVOTA ABAIXO}
TRiG

@TRiG De fato. Nada a ver com a citação do famoso Eric Cantona. ;-)
jlliagre

5

Meu terminal não exibiu nenhum caractere digitado. Nenhum dos outros truques funcionou. Este funciona:

stty sane

Trabalhou para mim. Às vezes, tenho um terminal em um estado que não responde, mas nenhuma das outras sugestões poderia me devolver a saída novamente. As outras sugestões que eu tentei, mas não funcionaram:

echo ^v^o
reset
printf "\033c"

Fonte: /unix//a/79686/53236


0

Na verdade, existem alguns problemas em potencial e isso pode ter a ver com o seu ambiente. Primeiro, como o @Jesper respondeu, você quer fazer stty sane. No entanto, talvez você nem consiga configurar o ambiente corretamente com isso.

Isto é devido à diferença entre /bin/bashe /bin/sh. Ao abrir o seu tty, execute /bin/bashe tente stty sane. Isso deve consertar tudo. Finalmente, recomendo adicionar uma coisa dessas ao .bashrc

Outra opção seria instalar um software sensato.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.