O que posso fazer se o bash parar de ecoar?

10

Às vezes, um dos aplicativos que uso no trabalho estraga meu bash e, portanto, não vejo mais minha própria entrada. Ou seja,

$ echo foo
foo
$

torna-se

$ foo $

Eu tentei incorretamente executar o stty -echoque piorou as coisas e agora ele pára de aceitar comandos todos juntos, o que coloca minha entrada em algum estado que apenas faz >com que apareça toda vez que eu quebro a linha e nada mais.

O que eu deveria ter feito?

Kit Sunde
fonte
2
Tente correr resetpara um bom começo. Claro que você não pode entrar agora qualquer comando neste modo terminal a partir de uma outra tentativa algo como cat >/dev/pts/3onde 3é o seu número de terminal problemático e em seguida, bateu as seguintes teclas: ESC c ENTER Ctrl-D.
jimmij

Respostas:

19

O remédio usual para coisas como essa é

stty sane

O stty -echonão deveria ter feito isso pior, como que apenas desliga ecoando de entrada, e você já teve isso.

O fato de você dizer que apenas retorna faz >com que apareça significa que você iniciou algo que está causando continuidade nas próximas linhas, por exemplo echo ', fará isso porque está aguardando o fechamento 'para terminar a sequência. Outras coisas causarão isso também, como if something; está esperando a then ... fiparte.

Você provavelmente poderia ter batido ctrl- cnaquele estágio para pará-lo aguardando o resto do comando, a menos que o terminal estivesse tão bagunçado que as interrupções também não estivessem sendo geradas.

Wurtel
fonte
Ah, isso faz sentido. Eu tentei acertar os dois ctrl + ce ctrl + zmas não parecia conseguir nada.
Kit Sunde
3

Além da resposta de @ wurtel (especialmente a provável explicação do >problema), stty echoé o oposto de stty -echo, então você pode usá-lo. Você também pode usar reset, que geralmente vem com pacotes ncurses.

peterph
fonte