Einige Anmerkungen zum historischen STTY
Befehl, um einige Ungenauigkeiten in der anderen Antwort und den zugehörigen Kommentaren zu klären :
Frühere Terminals wie das DEC VT05 oder VT50 und die vorherigen Ferndrucker unterstützten nur Großbuchstaben. Dies bedeutete, dass von ihnen niemals Kleinbuchstaben eingegeben werden konnten oder dass sie keinen anderen Buchstaben als Großbuchstaben anzeigen konnten.
Bei Unix wird zwischen Groß- und Kleinschreibung unterschieden und bei den meisten Befehlen wird ein Problem angezeigt. Aus diesem Grund gibt es spezielle Termio / Termios-Modi (und die gibt es in modernen Unices immer noch, obwohl diese Terminals schon lange nicht mehr existieren), um diese zu handhaben.
termio / termios sind die älteren und neueren Schnittstellen zur Steuerung des tty-Treibers unter Unix. In einem Termio (s) ioctl
spezifizieren Sie Input, Output, Control Flags ..., die festlegen, wie die elektrischen Signale auf einer seriellen Leitung in Input- und Output-Zeichen und das interne Verhalten des Treibers bei Dingen wie Echo, Echo usw. verarbeitet werden sollen Zeileneditor ... Die meisten davon betreffen virtuelle Terminals wie moderne Unix-VGA-Konsolen oder Pseudoterminals.
Die Befehlszeilenschnittstelle für termio(s)
ist der stty
Befehl.
Für die Verarbeitung von Terminals in Großbuchstaben sind drei termio(s)
Flags erforderlich:
IUCLC
(Eingabe von Groß- in Kleinbuchstaben): Eingehende Zeichen werden bei der Eingabe in Kleinbuchstaben umgewandelt. Das heißt, das A
vom Terminal gesendete wird als ein a
. Das bedeutet , dass mit diesem, ich jetzt geben kann LS
auf meine VT50 und die Schale wird gelesen ls
aus /dev/ttyX
. Ich kann den stty
Befehl jetzt auch ausführen .
- Mit
IUCLC
alone und terminal schickte der Treiber echo
während LS
der Eingabe ls
an das Terminal zurück (damit ich sehen kann, was ich tippe), was nicht angezeigt werden kann. Wir brauchen also auch OLCUC
(Ausgabe von Kleinbuchstaben in Großbuchstaben) Wir müssen jeden Kleinbuchstaben in Großbuchstaben umwandeln, bevor wir ihn an das Terminal senden.
- Nun können wir Unix von einem VT50 aus betreiben, aber was ist, wenn wir jetzt Großbuchstaben eingeben möchten? Hier kommt das
xcase
lokale Flag ins Spiel. Dies ermöglicht (nur im kanonischen Eingabemodus) das Senden von Großbuchstaben A
durch Eingabe \A
, und bei der Ausgabe wird ein Großbuchstabe A
als gerendert \A
. (dieser ist nicht unter Linux implementiert)
Der stty
Befehl hat die entsprechenden iuclc
, olcuc
und xcase
Einstellungen und einen Aliasnamen für alle drei: lcase
. Die Standardeinstellung und was Sie danach bekommen, stty sane
ist lcase
aus.
Wenn Sie also mit einem VT50 arbeiten, müssen Sie nur Folgendes ausführen:
stty lcase
in der Lage sein, alles zu tun. Aber Moment mal, wie geht das, wenn Sie nur Großbuchstaben versenden können? Das ist , wo Sie einen benötigen STTY
Befehl als Alias für stty
, und deshalb stty
unterstützt LCASE
als Alias für lcase
.
Es gibt keinen solchen SANE
Alias, da Sie dies nicht möchten, stty sane
wenn Ihr Terminal nur in Großbuchstaben geschrieben ist.
Wenn Sie laufen stty lcase
oder stty olcuc
versehentlich auf einem normalen Terminal (versuchen Sie es in xterm
oder jeder modernen Terminal), das ist , wo Sie eingeben müssen , stty sane
um Normalität zurückkehren. Dafür brauchen Sie aber keinen STTY
Befehl. Wenn Sie eingeben stty sane
, Sie werden sehen STTY SANE
Echo zurück, aber das ist nur der angezeigte Text (nicht der eingegebene Befehl) , die übersetzt worden sein , es ist immer noch der stty sane
Befehl, der ausgeführt werden soll.
Diejenigen iuclc
, olcuc
, xcase
verwendeten Flaggen von POSIX spezifiziert werden (und das ist wahrscheinlich , warum es auf Linux implementiert wird , obwohl ich ernsthaft jemand jemals verbunden ein dieses alten Terminals zu einem Linux - System (außer zum Spaß) zweifeln), aber entfernt worden in POSIX: 2001.