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?

Howard
fonte

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.

Florian
fonte
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.

choroba
fonte
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"
jlliagre
fonte
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

Jesper Rønn-Jensen
fonte
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.

user2262111
fonte