PuTTY: podłączony do jakiegoś serwera Ubuntu, czasami przestaje przechodzić do nowej linii po naciśnięciu enter

16

Używam PuTTY w celu SSH do jakiegoś serwera Ubuntu 14.04.4 LTS x64. Naciśnięcie klawisza ENTERpowoduje przejście terminalu do nowej linii. Jednak od czasu do czasu niektóre programy generują tekst, a następnie naciśnięcie klawisza ENTERnie powoduje, że terminal przechodzi do nowej linii (patrz demonstracja poniżej).

wprowadź opis zdjęcia tutaj

Czy jest jakiś sposób, aby temu zapobiec, a przynajmniej gdy naciśnięcie klawisza ENTERnie powoduje już przejścia terminalu do nowej linii, czy istnieje zresetowanie terminala, co ENTER powoduje, że terminal ponownie przechodzi do nowej linii?

Franck Dernoncourt
źródło
2
Franck - Kiedy to nastąpi, naciśnij Ctrl+C, a następnie wpisz reseti naciśnij Enter. Daj mi znać, jeśli to pomoże.
Pimp Juice IT
@Facebook Dzięki, wpisz reseti naciśnij Enterdziała!
Franck Dernoncourt
Zgłoś też raport o błędzie przeciwko temu glancesprogramowi , który spowodował, że terminal był w złym stanie po awarii;)
marcelm 16.10.17
Zbiegiem okoliczności, podobne pytanie pojawiło się na Unix i Linux Stack Exchange: unix.stackexchange.com/questions/398291
JdeBP
Rozważ skorzystanie z cygwin i zainstalowanie terminalu. Kit jest bardzo okropny. Na przykład mc nie wyświetla się poprawnie i nie pozwala wybierać plików z shiftem.
JorgeeFG

Odpowiedzi:

25

Możesz użyć polecenia reset , wpisując, reseta następnie naciskając, Enterkiedy to nastąpi, aby zresetować terminal, aby po Enter ponownym naciśnięciu przejdzie do nowej linii .

Komenda

ubuntu@db200krctc:~$ ubuntu@db200krctc:~$ ubuntu@db200krctc:~$ ubuntu@db200krctc:~$
ubuntu@db200krctc:~$ reset
ubuntu@db200krctc:~$
ubuntu@db200krctc:~$
ubuntu@db200krctc:~$

Dalsze zasoby

  • Resetowanie

    Po wywołaniu jako reset, tset ustawia tryby gotowania i echa, wyłącza tryby cbreak i raw, włącza tłumaczenie nowego wiersza i resetuje wszelkie nieuzbrojone znaki specjalne do ich wartości domyślnych przed wykonaniem inicjalizacji terminala opisanej powyżej. Jest to przydatne, gdy program umiera, pozostawiając terminal w nienormalnym stanie.

Pimp Juice IT
źródło
16

W resettym konkretnym przypadku polecenie robi więcej, niż naprawdę potrzebujesz, ponieważ Twoim problemem jest wyłączenie echa. resetfaktycznie emituje sekwencje kontrolne, aby zresetować sam terminal, gdy wszystko, czego tak naprawdę potrzebujesz, to ponownie skonfigurować dyscyplinę liniową w jądrze systemu operacyjnego, ponownie włączyć tryb echa i nie dotykać terminalu .

W tym celu wystarczy użyć:

stty przy zdrowych zmysłach
a nawet po prostu:

echo stty

resetreaguje na sytuacje, w których rzeczywiście stan terminalu wymaga zresetowania, a nie (tylko) stan dyscypliny linii; tzn. tabstopsy zostały usunięte, terminal pozostaje przełączony na alternatywny bufor ekranu, zamieniono niewygodny 8-bitowy zestaw znaków i tak dalej.

Dalsza lektura

JdeBP
źródło
Jak dyscyplina liniowa faktycznie znajduje się w jądrze? Ta odpowiedź wydaje mi się słuszna, z wyjątkiem tej części, której jestem bardzo wątpliwy.
Stephen Ostermiller
@StephenOstermiller: Gdzie jeszcze by to było?
psmears
3
Dyscyplina liniowa jest w rzeczywistości jednym z pierwszych sterowników jądra, które były konfigurowalne z przestrzeni użytkownika, Unix miał sttyi gtty(ustawiał i odbierał) wywołania systemowe na długo zanim zostały zastąpione przez bardziej ogólne ioctlwywołanie.
Guntram Blohm obsługuje Monikę
6
Ma to sens, ponieważ jest wtedy niezależny od powłoki, więc będzie działał również w innych programach. A na początku nie było programu terminala, że ​​tak powiem - konsole szeregowe będą oddziaływać bezpośrednio z jądrem (i rzeczywiście mogą).
Muzer
1
Wyjaśnienie: W dawnych czasach tylną stroną / dev / tty był fizyczny port szeregowy. Dyscypliną linii zarządzał sterownik jądra tty. W przypadku fałszywej sesji terminala lub sesji terminalu sieciowego / dev / tty jest terminalem psuedo, a jego tylna strona nie jest fizycznym portem szeregowym, ale innym urządzeniem głównym pseduo, z którego dane sesji są odczytywane / zapisywane i podawane do gniazda sieciowego lub emulator terminala. Strona / dev / tty pseudo terminala zachowuje się tak samo jak strona / dev / tty prawdziwego portu szeregowego. en.wikipedia.org/wiki/Pseudoterminal
Sam Liddicott