Einige Anmerkungen zum historischen STTYBefehl, 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) ioctlspezifizieren 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 sttyBefehl.
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 Avom Terminal gesendete wird als ein a. Das bedeutet , dass mit diesem, ich jetzt geben kann LSauf meine VT50 und die Schale wird gelesen lsaus /dev/ttyX. Ich kann den sttyBefehl jetzt auch ausführen .
- Mit
IUCLCalone und terminal schickte der Treiber echowährend LSder Eingabe lsan 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 Adurch Eingabe \A, und bei der Ausgabe wird ein Großbuchstabe Aals gerendert \A. (dieser ist nicht unter Linux implementiert)
Der sttyBefehl hat die entsprechenden iuclc, olcucund xcaseEinstellungen und einen Aliasnamen für alle drei: lcase. Die Standardeinstellung und was Sie danach bekommen, stty saneist lcaseaus.
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 STTYBefehl als Alias für stty, und deshalb sttyunterstützt LCASEals Alias für lcase.
Es gibt keinen solchen SANEAlias, da Sie dies nicht möchten, stty sanewenn Ihr Terminal nur in Großbuchstaben geschrieben ist.
Wenn Sie laufen stty lcaseoder stty olcucversehentlich auf einem normalen Terminal (versuchen Sie es in xtermoder jeder modernen Terminal), das ist , wo Sie eingeben müssen , stty saneum Normalität zurückkehren. Dafür brauchen Sie aber keinen STTYBefehl. Wenn Sie eingeben stty sane, Sie werden sehen STTY SANEEcho zurück, aber das ist nur der angezeigte Text (nicht der eingegebene Befehl) , die übersetzt worden sein , es ist immer noch der stty saneBefehl, der ausgeführt werden soll.
Diejenigen iuclc, olcuc, xcaseverwendeten 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.