PuTTY: Mit einem Ubuntu-Server verbunden. Wenn Sie die Eingabetaste drücken, wird manchmal keine neue Leitung angezeigt

2093
Franck Dernoncourt

Ich verwende PuTTY, um auf einigen Ubuntu 14.04.4 LTS x64-Servern SSH zu nutzen. Durch Drücken der Taste wechselt ENTERdas Terminal zu einer neuen Zeile. Von Zeit zu Zeit gibt ein Programm jedoch etwas Text aus. Wenn Sie anschließend die Taste drücken, wechselt ENTERdas Terminal nicht mehr in eine neue Zeile (siehe nachfolgende Demonstration).

PuTTY: Mit einem Ubuntu-Server verbunden. Wenn Sie die Eingabetaste drücken, wird manchmal keine neue Leitung angezeigt

Gibt es eine Möglichkeit, dies zu verhindern, oder wenn das Drücken der Taste zumindest ENTERnicht dazu führt, dass das Terminal zu einer neuen Zeile wechselt, gibt es das Terminal trotzdem zurückzusetzen, sodass ENTER das Terminal wieder zu einer neuen Zeile wechselt?

16
Franck - Wenn dies der Fall ist, drücken Sie die Tastenkombination "Strg + C", geben Sie dann "reset" ein und drücken Sie die Eingabetaste. Lass es mich wissen, wenn das einem hilft. Pimp Juice IT vor 7 Jahren 2
@Facebook Vielen Dank, tippe 'reset' ein und drücke 'Enter'. Franck Dernoncourt vor 7 Jahren 0
Reichen Sie auch einen Fehlerbericht gegen dieses "Blick" -Programm ein, um das Terminal nach dem Absturz in einem fehlerhaften Zustand zu verlassen. marcelm vor 7 Jahren 0
Zufällig tauchte eine ähnliche Frage bei Unix & Linux Stack Exchange auf: https://unix.stackexchange.com/questions/398291/ JdeBP vor 7 Jahren 0
Erwägen Sie, cygwin zu verwenden und das Terminal zu installieren. Kitt ist sehr schrecklich. Beispielsweise wird mc nicht korrekt angezeigt und Sie können keine Dateien mit shift auswählen. JorgeeFG vor 7 Jahren 0
JorgeeFG und andere werden erfreut sein zu erfahren, dass die Widerlegung der meisten dieser Behauptungen über PuTTY seit Jahren auf SuperUser besteht, in einigen Fällen 7 Jahre: https://superuser.com/questions/75088/ https: // superuser. com / questions / 915653 / Der Rest wird in der PuTTY-Bedienungsanleitung in Kapitel 4 ganz klar beantwortet, wurde aber hier nie gefragt, was ich finden kann. JdeBP vor 7 Jahren 0

2 Antworten auf die Frage

24
Pimp Juice IT

Sie können den Befehl zum Zurücksetzen verwenden, indem Sie ihn eingeben und resetdann drücken, Enterwenn dies der Fall ist, um das Terminal zurückzusetzen, damit beim erneuten Drücken eine neue Zeile angezeigt Enter wird.

Befehl

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

Weitere Ressourcen

  • zurücksetzen

    Wenn als Reset aufgerufen, setzt tset die Modi Cooked und Echo, deaktiviert die Modi Cbreak und Raw, aktiviert die Zeilenumbruchübersetzung und setzt alle nicht gesetzten Sonderzeichen auf ihre Standardwerte zurück, bevor die oben beschriebene Terminalinitialisierung durchgeführt wird. Dies ist nützlich, wenn ein Programm stirbt und ein Terminal in einem abnormalen Zustand verlässt.

16
JdeBP

Der resetBefehl ist in diesem Fall mehr, als Sie wirklich benötigen, da das Problem lediglich darin besteht, dass das Echo ausgeschaltet wurde. resetgibt eigentlich Steuersequenzen aus, um das Terminal selbst zurückzusetzen, wenn Sie lediglich die Leitungsdisziplin innerhalb des Betriebssystemkerns neu konfigurieren müssen, den Echomodus wieder aktivieren und das Terminal überhaupt nicht berühren .

Verwenden Sie dazu einfach:

stty gesund
oder auch nur:

Stty Echo

resetadressiert Situationen, in denen es tatsächlich der eigene Zustand des Terminals ist, der zurückgesetzt werden muss und nicht (nur) der Zustand der Liniendisziplin; dh die Tabstops wurden gelöscht, das Terminal wird in den alternativen Bildschirmpuffer geschaltet, ein unbequemer 8-Bit-Zeichensatz wurde eingelesen und so weiter.

Lesen Sie weiter

Wie ist eigentlich Liniendisziplin im Kernel? Diese Antwort klingt für mich richtig, abgesehen von dem Teil, dessen ich sehr zweifelhaft bin. Stephen Ostermiller vor 7 Jahren 0
@StephenOstermiller: Wo sonst wäre es? psmears vor 7 Jahren 0
Die Zeilendisziplin ist tatsächlich einer der ersten Kernel-Treiber, der vom Userspace aus konfigurierbar war. Unix hatte "stty" und "gtty" (Set and Get) -Systemaufrufe, lange bevor sie durch den allgemeineren `ioctl'-Aufruf ersetzt wurden. Guntram Blohm vor 7 Jahren 3
Ich hätte erwartet, dass es Teil der Hülle ist. Ich bin etwas überrascht, dass der Kernel beteiligt sein muss. Stephen Ostermiller vor 7 Jahren 0
Es ist sinnvoll, weil es dann unabhängig von der Shell ist, also funktioniert es auch in anderen Programmen. Und in der Anfangszeit gab es sozusagen kein Terminalprogramm - serielle Konsolen würden direkt mit dem Kernel interagieren (und können es auch immer noch). Muzer vor 7 Jahren 6
Zur Klarstellung: In früheren Zeiten war die Rückseite von / dev / tty eine physische serielle Schnittstelle. Die Zeilendisziplin wurde vom Kerneltty-Treiber verwaltet. Bei einer gefälschten Terminalsitzung oder einer Netzwerkterminalsitzung ist / dev / tty ein Pseudo-Terminal und die Rückseite ist keine physische serielle Schnittstelle, sondern ein anderes pseduo-Master-Gerät, von dem aus Sitzungsdaten gelesen / geschrieben und in den Netzwerksockel eingespeist werden der Terminal-Emulator. Die / dev / tty-Seite des Pseudo-Terminals verhält sich ähnlich wie die / dev / tty-Seite eines echten seriellen Ports. https://en.wikipedia.org/wiki/Pseudoterminal Sam Liddicott vor 7 Jahren 1
... oder Sie können einfach den Hyperlinks in der weiterführenden Lektüre folgen, um dort mehr über Terminals und ähnliches zu erfahren. Eine Erklärung der Liniendisziplinen, einschließlich Hinweisen auf Bücher, die noch mehr erklären, ist nur zwei Hyperlinks von dieser Antwort entfernt. Und bei Stack Exchange gibt es noch viel mehr. In Antwortkommentaren brauchen wir wirklich nicht alle Erklärungen. JdeBP vor 7 Jahren 0