Es ist eine Situation, die mir ziemlich oft passiert ist: Nachdem ich (mit einer anderen Absicht) Ctrl-Sin einem Terminal gedrückt habe, wird die Interaktion (Eingabe oder Ausgabe) mit ihm eingefroren. Es ist wahrscheinlich eine Art "Scroll Lock" oder was auch immer.
Wie schalte ich das Terminal danach frei?
(Dieses Mal habe ich mit apt-shell
einem bash
Inside urxvt
gearbeitet - nicht sicher, welcher von ihnen für die spezielle Behandlung verantwortlich ist Ctrl-S: Ich habe die Befehlsgeschichte rückwärts durchsucht C-r, wie bei readline üblich, aber dann wollte ich "zurück" "Vorwärts durch die Geschichte mit dem Üblichen - zumindest in Emacs- C-s( 1 , 2 , 3 ), aber das führte zum Einfrieren des Terminals. Nun, Scrollen / Blättern, um vergangene Dinge anzusehen , funktioniert im Terminal immer noch, aber keine Interaktion mit den dort ablaufenden Prozessen.)
vim
und Strg-S gedrückt, um meine Änderungen zu speichern. Uh-ohXD
Antworten:
Ctrl-Q
Wenn Sie dies insgesamt deaktivieren möchten, müssen Sie
stty -ixon
ein Startskript verwenden. Verwenden Sie, damit eine beliebige Taste die Dinge wieder zum Laufen bringtstty ixany
.ps: Das macht weder das Terminal noch die Shell, sondern der Terminal-Treiber des Betriebssystems.
quelle
Ctrl-C
; funktioniert es auch (Und an einem anderen Ort schlugen sie vorCtrl-Q
, genau wie Sie.)stty
.)Ctrl-S
und dannCtrl-Q
wieder aufgenommen wurde.Ctrl- Qist in der Tat die Antwort. Ich dachte, ich würde eine kleine Geschichte davon einwerfen, die zu lang ist, um in die Ränder der richtigen Antwort von ak2 zu passen .
In den dunklen Zeiten war ein Terminal ein großes Gerät, das über eine lange Leitung oder über Telefonleitungen mit Modems mit einem entfernten Gerät verbunden war (ursprünglich ein anderes Terminal, da die Bedienung von Teletypen so viel einfacher zu erlernen war als eine Telegrafentaste). Zu der Zeit, als Unix entwickelt wurde, war der ASCII-Code bereits gut etabliert (obwohl der konkurrierende EBCDIC-Code von IBM immer noch ein Muss war).
Die frühesten Terminals hielten eine gedruckte Aufzeichnung jedes empfangenen Zeichens. Solange die Zeichen nicht schneller ankamen, als der Druckkopf sie schreiben konnte, zumindest. Sobald jedoch CRT-basierte Terminals möglich waren, trat das Problem auf, dass nur etwa 25 Zeilen auf die CRT passten und 25 Zeilen mit 80 Zeichen genügend RAM darstellten, so dass niemand ernsthaft darüber nachdachte, mehr RAM für Zeichen bereitzustellen, die von oben gescrollt worden waren der Bildschirm.
Daher war eine Konvention erforderlich, um zu signalisieren, dass das Sendeende pausieren sollte, damit der Leser aufholt.
Der 7-Bit-ASCII-Code enthält 33 Codepunkte für Steuerzeichen (0 bis 31 und 127). Einige von denen waren wirklich gut Zwecke hergestellt, wie zum Beispiel
NUL
(leere Papier Bandführung zum Einfädeln, Lücken und Spleißstellen),DEL
( „durchgestrichen“ Zeichen auf Papierband durch Stanzen all sieben Löcher angegeben),BEL
(ding!)CR
,LF
UndTAB
. Aber vier wurden explizit definiert das Endgerät selbst (für die SteuerungDC1
zuDC4
aka Ctrl + Q, Strg + R, Strg + S und Strg + T).Ich vermute, dass ein Ingenieur dachte, dass (wie es in der Mnemonik heißt) "S" für "Stop" und "Q" für "Continue" nicht allzu schlimm sind und
DC3
"Bitte aufhören zu senden" undDC1
"OK " bedeuten , sende jetzt weiter ".Sogar diese Konvention war bereits etabliert, als Unix bei Bell Labs das Nest verließ, um in die Welt hinauszugehen.
Die Konvention ist als Software-Flusskontrolle bekannt und in realen seriellen Geräten äußerst verbreitet. Die korrekte Implementierung ist nicht einfach, da die Verwendung eines dieser Zeichen für einen anderen Zweck im Kommunikationskanal verhindert wird und das Stoppsignal vor ausstehenden empfangenen Zeichen behandelt werden muss, um zu vermeiden, dass mehr als das empfangende Ende gesendet wird Griff.
Wenn es praktikabel ist, wird die Verwendung zusätzlicher Signale außerhalb des Bandes aus dem seriellen Datenstrom zur Flusssteuerung stark bevorzugt. Bei direkt verdrahteten Verbindungen, die zusätzliche Signaldrähte bieten, wird ein Hardware-Handshake verwendet, der diese Zeichen für andere Zwecke freigibt.
Natürlich verwendet das heutige Terminalfenster keinen physischen seriellen Anschluss, verfügt über Bildlaufleisten und benötigt überhaupt kein Software-Handshaking. Aber die Konvention bleibt bestehen.
Ich erinnere mich an die Behauptung, dass Richard Stallman in den ersten Versionen von Emacs Beschwerden über die Zuordnung von Strg + S zur inkrementellen Suche erhalten hat und dass er jedem Benutzer, der auf eine 7-Bit-Verbindung angewiesen war, eher unzufrieden war.
quelle