Co mogę zrobić, jeśli bash przestanie echo?

10

Jedna z aplikacji, z których korzystam w pracy, czasami wkręca się w mój bash, więc nie widzę już własnych danych wejściowych. To znaczy

$ echo foo
foo
$

staje się

$ foo $

Niepoprawnie próbowałem uruchomić, stty -echoco pogorszyło sytuację, a teraz przestaje akceptować wszystkie polecenia razem, co powoduje, że moje dane wejściowe są w pewnym stanie, który powoduje >pojawienie się za każdym razem, gdy łamię linię i nic więcej.

Co powinienem zrobić?

Kit Sunde
źródło
2
Staraj się biegać resetna dobry początek. Oczywiście nie można wprowadzić dowolne polecenie teraz do tego terminala Tak od innego spróbować coś takiego cat >/dev/pts/3, gdzie 3jest twój problem numer terminala, a następnie uderzył w następujących klawiszy: ESC c ENTER Ctrl-D.
jimmij

Odpowiedzi:

19

Zwykle lekarstwem na takie rzeczy jest

stty sane

Nie stty -echopowinno być jeszcze gorzej, ponieważ to po prostu wyłącza echo wejścia, a ty już to miałeś.

Fakt, że mówisz, że zwraca tylko powoduje, że >się pojawia, oznacza, że ​​zacząłeś coś, co powoduje kontynuację w kolejnych wierszach, np. echo 'Zrobi to, ponieważ czeka na zamknięcie, 'aby zakończyć ciąg. Powodują to również inne rzeczy, takie jak if something; czeka na then ... ficzęść.

Prawdopodobnie mógłbyś trafić ctrl- cna tym etapie, aby zatrzymać go na oczekiwanie na resztę polecenia, chyba że terminal był tak pomieszany, że przerwania również nie były generowane.

wurtel
źródło
Ach, to ma sens. Próbowałem zarówno uderzenia ctrl + c, a ctrl + zjednak nie wydaje się niczego osiągnąć.
Kit Sunde
3

Oprócz odpowiedzi @ wurtel (szczególnie prawdopodobnego wyjaśnienia >problemu) stty echojest odwrotnie stty -echo, więc możesz z tego skorzystać. Możesz także użyć reset, który zwykle jest dostarczany z pakietami ncurses.

Peter
źródło