Strg + 4 sendet ^ \
Terminals senden Zeichen (oder genauer Bytes), keine Schlüssel. Wenn eine Taste gedrückt wird, die ein druckbares Zeichen darstellt, sendet das Terminal dieses Zeichen an die Anwendung. Die meisten Funktionstasten sind als Escape-Sequenzen codiert: Sequenzen von Zeichen, die mit der Zeichennummer 27 beginnen. Einige Tastenkombinationen der Form Ctrl+ characterund einige Funktionstasten werden als Steuerzeichen gesendet - im ASCII-Zeichensatz , den alle modernen Computer verwenden als Basis verwenden (Unicode, ISO Latin- nusw. sind alle Obermengen von ASCII), 33 Zeichen sind Steuerzeichen: Zeichen Nr. 0 bis 31 und 127. Steuerzeichen sind nicht druckbar, sollen aber in Anwendungen eine Wirkung haben; Beispielsweise ist das Zeichen 10, bei dem es sich um Control-J handelt (normalerweise ^ J), ein Zeilenumbruchzeichen. Wenn ein Terminal dieses Zeichen anzeigt, bewegt es den Cursor in die nächste Zeile, anstatt ein Symbol anzuzeigen. Das Escape-Zeichen selbst ist ein Steuerzeichen ^ [(Wert 27).
Es sind nicht genügend Steuerzeichen vorhanden, um alle Ctrl+ characterTastenkombinationen abzudecken. Nur Buchstaben und die Zeichen @[\]^_?
haben ein entsprechendes Steuerzeichen. Wenn Sie Ctrl+ 4oder Ctrl+ drücken $(was meiner Meinung nach Ctrl+ Shift+ ist 4), muss das Terminal etwas zum Senden auswählen. Abhängig vom Terminal und seiner Konfiguration gibt es mehrere gängige Möglichkeiten:
- Das Terminal ignoriert den CtrlModifikator und sendet das Zeichen
4
oder $
.
- Das Terminal sendet eine Escape-Sequenz, die die exakte Taste und die Modifikatoren codiert, die gedrückt wurden.
- Das Terminal sendet ein anderes Steuerzeichen.
Viele Terminals senden Steuerzeichen für einige Tasten in der Ziffernreihe:
- Ctrl+ 2→ ^ @
- Ctrl+ 3→ ^ [
- Ctrl+ 4→ ^ \
- Ctrl+ 5→ ^]
- Ctrl+ 6→ ^^
- Ctrl+ 7→ ^ _
- Ctrl+ 8→ ^?
Ich weiß nicht, wo diese besondere Konvention entstanden ist.
Ctrl+ |sendet dasselbe Zeichen, weil es Ctrl+ Shift+ ist \und das Terminal ^ \ sendet, ob die Umschalttaste gedrückt wurde oder nicht.
^ \ wird beendet
Das Terminal selbst (genauer gesagt die generische Terminal-Unterstützung im Kernel) interpretiert einige Steuerzeichen speziell. Diese Interpretation kann so konfiguriert werden, dass verschiedene Zeichen zugeordnet oder von Anwendungen deaktiviert werden, die die Zeichen selbst verarbeiten möchten. Eine bekannte Interpretation dieser Art ist, dass ^ M, das von der ReturnTaste gesendete Zeichen, die aktuelle Zeile an die Anwendung sendet, wenn sich das Terminal im Kochmodus befindet , in dem die Anwendungen zeilenweise Eingaben empfangen.
Einige Zeichen senden im Vordergrund Signale an die Anwendung. ^ C sendet das Interruptsignal (SIGINT), das die Anwendung üblicherweise auffordert, die Ausführung zu stoppen und den nächsten Befehl des Benutzers zu lesen. Nicht interaktive Anwendungen werden normalerweise beendet. ^ \ sendet das Beendigungssignal (SIGQUIT), das die Anwendung üblicherweise anweist, so schnell wie möglich zu beenden , ohne etwas zu speichern. Viele Anwendungen überschreiben nicht das Standardverhalten, nämlich das sofortige Beenden der Anwendung¹. Wenn Sie also Ctrl+ drücken 4(oder irgendetwas, das das Zeichen ^ \ sendet) cat
oder bc
, wobei keines der beiden das Standardverhalten außer Kraft setzt, wird die Anwendung beendet.
Das Terminal selbst druckt den ^\
Teil der Nachricht: Es ist eine visuelle Darstellung des von Ihnen eingegebenen Zeichens, und das Terminal befindet sich im Kochmodus und mit aktiviertem Echo (Zeichen werden vom Terminal angezeigt, sobald Sie sie eingeben, im Gegensatz zu Nicht-Echo-Modus, in dem die Zeichen nur an die Anwendung gesendet werden, die sie möglicherweise nicht anzeigt. Der Quit
Teil stammt von bash: Es stellt fest, dass sein untergeordneter Prozess aufgrund eines Beendigungssignals gestorben ist, und auf diese Weise werden Sie darüber informiert.
Shells verarbeiten alle gängigen Signale. Wenn Sie also ^ \ in eine Shell eingeben, wird Ihre Sitzung nicht beendet. Sie erhalten lediglich eine neue Eingabeaufforderung, die mit ^ C identisch ist.
Mit dem stty
Befehl können Sie mit den Terminaleinstellungen spielen .
¹ Und generieren traditionell einen Core-Dump , aber viele Systeme deaktivieren dies heutzutage standardmäßig.
less
oder denkenvim
. Beachten Sie, dass incmd | less
,CTRL-C
tötet nicht im Allgemeinencmd
(während fürless
(Fortsetzung) wird die aktuelle Aktion abzubrechen (wie eine Suche) behandelt wird )Zusätzlich zu Gilles Antwort möchte ich hinzufügen, dass Sie in bash immer nicht druckbare Zeichen mit Ctrl-v+ key( in diesem Fall Ctrl-v+ Ctrl+4) eingeben und den Zeichencode mit überprüfen können
Sie erhalten den Dezimalcode des Zeichens, der beim Einchecken
man ascii
dem Dateitrennzeichen (FS) entspricht .quelle
printf '%d\n' '"^\'
:?