stty
Funktion
stty setzt die Terminalparameter oder zeigt sie an
Syntax
stty [-ag] [-all] [-save]
[Einstellungen ...]
Beschreibung
Wenn stty ohne Argumente aufgerufen wird, gibt es die
Leitungsgeschwindigkeit und alle Parameter, die von der Einstellung sane
abweichen, für das aktuelle Terminal aus.
Alle Anzeigen und Einstellungen beziehen sich auf die Standardeingabe.
Um also ein anderes als das aktuelle Terminal zu überprüfen oder
einzustellen, muß die Standardeingabe von dem entsprechenden Device
umgelenkt werden.
Mit den folgenden Argumenten lassen sich die Eigenschaften des Terminals
ändern. Wird einem Argument ein `-' vorangestellt, so wird die
entsprechende Eigenschaft abgeschaltet bzw. in ihr Gegenteil verkehrt.
Um alle Einstellungen in ihrer vollen Bedeutung zu verstehen, muß
man sich mit der Funktionsweise der asynchronen, zeichenorientierten Gerätetreiber
im Kernel im allgemeinen und der seriellen Schnittstelle im speziellen
befassen. Dieses Thema führt aber weit über den Rahmen dieses
Buches hinaus.
Allgemeine Einstellungen:
- parenb
- schickt und erwartet ein Paritätsbit bei der
Datenübertragung auf der seriellen Schnittstelle
- parodd
- setzt ungerade Parität (gerade mit -parodd)
- cs5 cs6 cs7 cs8
- setzt die Zeichengröße auf 5, 6, 7 oder 8 Bits
- hupcl | hup
- wenn der letzte Prozeß die Gerätedatei schließt,
werden DTR und RTS zurückgesetzt und darurch ein Modem zum
Unterbrechen einer eventuell noch bestehenden Telefonverbindung veranlaßt
(hangup on close)
- cstopb
- jedes auf der seriellen Schnittstelle übertragene Zeichen wird
durch zwei Stopbits abgeschlossen (ein Stopbit mit -cstopb)
- cread
- sollte den ,,Receiver`` der seriellen Schnittstelle abschalten; wird
von Linux ignoriert
- clocal
- schaltet den ,,soft carrier`` für die serielle Schnittstelle
ein, das CD Modemkontrollsignal wird vorgetäuscht; serielle
Terminals brauchen normalerweise dieses Flag, auf Modemleitungen muß
dagegen der ,,hard carrier`` eingeschaltet sein, damit das Modem die
Schnittstelle kontrollieren kann
- crtscts
- schaltet RTS/CTS Hardware-Handshaking zur
Datenflußkontrolle auf der seriellen Schnittstelle ein
Einstellungen für die Terminaleingabe:
- ignbrk
- der Terminaltreiber ignoriert BREAK Zeichen
- brkint
- der serielle Treiber erzeugt ein SIGINT wenn vom Modem ein
BREAK gesendet wird
- inpck
- schaltet die Paritätsprüfung in der seriellen
Schnittstelle ein
- ignpar
- erkannte Paritätsfehler werden bei der Terminalausgabe
ignoriert
- parmrk
- erkannte Paritätsfehler werden bei der Ausgabe mit einer
255-0-Zeichen Sequenz markiert
- istrip
- löscht das 8. Bit der ankommenden Zeichen
- inlcr
- übersetzt ankommende NEWLINE
(Zeilenvorschub, ^J) in CARRIAGE
RETURN (Wagenrücklauf,
^M)
- igncr
- ignoriert ankommende CARRIAGE
RETURN
- icrnl
- übersetzt ankommende Wagenrücklauf in Zeilenvorschub
- iuclc
- alle ankommenden Großbuchstaben werden in Kleinbuchstaben
umgewandelt
- ixon
- der Terminaltreiber reagiert auf XON/XOFF Flowcontrol
- ixoff | tandem
- schaltet die automatische XON/XOFF Datenflußkontrolle für
die seriellen Schnittstellen ein; sobald der freie Platz im
Eingabedatenpuffer des Terminals die ,,Niedrigwassermarke`` von 16
Zeichen unterschreitet, wird die STOP_CHAR(tty)-Funktion ausgelöst
- ixany
- erlaubt jedes Zeichen als Startzeichen nach dem Einfrieren des
Datenflusses beim XON/XOFF Flowcontrol (nur ^Q mit -ixany)
- imaxbel
- wird vom Linux-Kernel ignoriert
Einstellungen für die Terminalausgabe:
- opost
- schaltet die ,,Nachbehandlung`` der ankommenden Zeichen im
Terminaltreiber ein; die Nachbearbeitung der Ausgabe kann mit -opost
komplett abgeschaltet werden
- olcuc
- übersetzt Kleinbuchstaben in Großbuchstaben
- ocrnl
- übersetzt Wagenrücklauf in Zeilenvorschub
- onlcr
- übersetzt Zeilenvorschub in Zeilenvorschub und Wagenrücklauf
- onocr
- unterdrückt Wagenrücklauf in der ersten Spalte
- onlret
- Zeilenvorschub erzeugt zusätzlichen Wagenrücklauf
Die Einstellungen für verschiedenste Ausgabeverzögerungen, die
im stty-Kommando erlaubt werden, stammen aus der Zeit, als noch
mechanische Ausgabegeräte mit trägen Druckköpfen als
Terminals benutzt wurden. Die Ausgabeverzögerungen verschaffen dem
Drucker genügend Zeit, die Mechanik korrekt zu positionieren, bevor
das nächste Zeichen gesendet wird. Die Parameter haben bei den
modernen Ausgabegeräten unter Linux keine Bedeutung mehr und werden
von den Terminaltreibern im Kernel nicht benutzt. Lokale
Einstellungen:
- isig
- ermöglicht Signalzeichen für Softwareinterrupts; die
Zuordnung bestimmter Signale zu Eingabezeichen ist auf der nächsten
Seite erklärt
- icanon
- schaltet die primitiven Zeileneditorfunktionen des Terminaltreibers
ein, siehe nächste Seite unter Spezialzeichen
- iexten
- ermöglicht Spezialzeichen außerhalb des POSIX-Standard
- echo
- wiederholt gelesene Zeichen auf der Ausgabe
- echoe | crterase
- zeigt Rückschritt als Rückschritt-Leerzeichen-Rückschritt
an
- echok
- gibt einen Zeilenvorschub nach einem Killzeichen (^U) aus;
auch diese Funktion wird vom aktuellen Linux-Kernel nicht benutzt
- echonl
- ein NEWLINE wird im
kanonischen Modus reflektiert, auch wenn das Echo für andere
Zeichen abgeschaltet ist
- noflsh
- unterdrückt das Löschen des Eingabepuffers nach einer
Unterbrechung
- xcase
- wird von den Treibern im Linux-Kernel ignoriert
- tostop
- hält Hintergrundprozesse an, die auf das Terminal schreiben
wollen
- echoctl | ctlecho
- gibt Controlzeichen als Caret-Sequenz aus (^C für
Control-C)
- echoprt | prterase
- wird vom Linux-Kernel nicht bearbeitet
- echoke | crtkill
- wird vom Linux-Kernel ebenfalls ignoriert
Kombinationen von Einstellungen: Die folgenden
Parameter für stty werden nicht direkt an den Kernel
weitergegeben. Sie sind vielmehr Zusammenfassungen häufig gebrauchter
Kombinationen der bisher vorgestellten Einstellungen.
- evenp | parity
- das gleiche wie parenb -parodd cs7 (mit einem `-' wie -parenb
cs8)
- oddp
- das gleiche wie parenb parodd c7 (mit `-' wie -parenb
cs8)
- nl
- das gleiche wie icrnl (mit `-' wie -icrnl -inlcr
-igncr)
- ek
- setzt die Löschzeichen auf ihre voreingestellten Werte
- sane
- setzt alle Einstellungen auf einen Standardwert (nicht unbedingt die
gleichen Werte wie beim Einschalten); das gleiche wie cread -ignbrk
brkint -inlcr -igncr icrnl -ixoff -iuclc -ixany imaxbel
opost-olcuc-ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0
vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt echoctl echoke; außerdem werden alle
Spezialzeichen auf ihre voreingestellten Werte zurückgesetzt
- cooked
- ermöglicht primitive Editorfunktionen für die
Standardeingabe, mit Löschen einzelner
Zeichen, Wörter oder ganzer Zeilen etc.; die Eingabe wird erst nach
einem Zeilenende dem bearbeitenden Programm übergeben; das gleiche
wie brkint ignpar istrip icrnl ixon opost isig icanon; außerdem
werden die eof und eol Zeichen auf ihre
voreingestellten Werte zurückgesetzt, wenn sie die gleichen wie die
min und time Zeichen sind; mit dem optionalen `-'
das gleiche wie raw
- raw
- setzt die Terminalparameter auf ,,rohe`` Eingabe, jedes
Zeichen wird sofort und roh an das
bearbeitende Programm weitergegeben; das gleiche wie -ignbrk
-brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -opost -isig -icanon -xcase min 1 time 0;
mit dem optionalen `-' das gleiche wie cooked
- cbreak
- das gleiche wie -icanon
- pass8
- das gleiche wie -parenb -istrip cs8; mit `-' das gleiche
wie parenb istrip cs7
- litout
- das gleiche wie -parenb -istrip -opost cs8; mit `-' das
gleiche wie parenb istrip opost cs7
- decctlq
- das gleiche wie -ixany
- tabs
- das gleiche wie tab0; mit dem optionalen `-' das gleiche
wie tab3
- lcase | LCASE
- das gleiche wie xcase iuclc olcuc
- crt
- das gleiche wie echoe echoctl echoke
- dec
- das gleiche wie echoe echoctl echoke -ixany; außerdem
wird das Spezialzeichen `intr' mit ^C, `erase'
mit DEL und `kill' mit ^U
belegt
Spezialzeichen: Die Spezialzeichen können mit
der Syntax `Name = Wert' definiert werden. Der Wert kann
entweder als Tastenkombination, als hexadezimale Zahl mit `0x'
am Anfang, als oktale Zahl mit `0' am Anfang oder als einfache
dezimale Zahl angegeben werden. Der Wert `^-'
oder `undef' schaltet ein Spezialzeichen ab. Folgende
Spezialzeichen werden unterstützt:
- intr
- sendet ein SIGINT (^C)
- quit
- sendet ein SIGQUIT (^\)
- erase
- löscht das zuletzt eingegebene Zeichen (^?)
- kill
- löscht die aktuelle Zeile (^U)
- eof
- sendet ein Dateiendezeichen (beendet die Eingabe) (^D)
- eol
- Zeilenende (undef)
- eol2
- alternatives Zeilenende (undef)
- start
- fährt mit einer angehaltenen Ausgabe fort (^Q)
- stop
- hält die Ausgabe an (^S)
- susp
- sendet ein SIGSTOP an ein Terminal (^Z)
- rprnt
- erneuert den Bildschirm (^R)
- werase
- löscht das letzte Wort (^W)
- lnext
- fügt das nächste Zeichen uninterpretiert ein, auch wenn es
ein Spezialzeichen ist (^V)
Unabhängig vom stty Programm bietet der Terminaltreiber
von Linux einen zweiten Zeichensatz an, der unter anderem grafische
Zeichen zur Umrandung von Menüs oder Boxen enthält. Zwischen dem
normalen und dem Sonderzeichensatz wird mit ^N und ^O
umgeschaltet. Diese Sonderzeichen müssen selbst durch das
Sonderzeichen ^V eingeleitet werden, damit sie unverändert
von der Shell an das Terminal gegeben werden.
Spezielle Einstellungen:
- min N
- bestimmt die minimale Zeichenzahl zum Abbrechen eines Lesezyklus im
cbreak Modus
- time N
- bestimmt die Zeit in Zehntelsekunden, nach der ein Lesezyklus im
cbreak Modus automatisch beendet wird, auch wenn die bei `min'
angegebene Anzahl Zeichen noch nicht gelesen ist
- rows N
- zeigt dem Kernel an, daß das Terminal N Zeilen auf dem
Bildschirm darstellen kann
- cols N
- zeigt dem Kernel an, daß das Terminal N Spalten
darstellen kann
- size
- ist keine Einstellung, sondern gibt die aktuell eingestellte
Bildschirmgröße (Zeilen und Spalten) aus
- line N
- setzt die Leitungsparameter auf N
- speed
- zeigt die Leitungsgeschwindigkeit an
- N
- setzt die Eingabe- und die Ausgabegeschwindigkeit auf Geschwindigkeit
(in Bit pro Sekunde); Geschwindigkeit kann dabei einer der
folgenden Werte sein
0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200
38400; mit dem Wert 0 kann eine Leitung unterbrochen werden, für
die `clocal' gesetzt ist; um höhere Übertragungsraten
als 38400 bps zu erzielen, muß die serielle Schnittstelle mit dem
setserial-Kommando umgestellt werden
- ispeed N
- setzt die Eingabegeschwindigkeit auf N Zeichen pro Sekunde
- ospeed N
- setzt die Ausgabegeschwindigkeit auf N Zeichen pro Sekunde
Optionen
- -a
- zeigt alle Einstellungen in lesbarer Form
- -g
- gibt alle Einstellungen in einer Form, die beim Zurücklesen
(als Kommandozeilenargument) die gleichen Einstellungen reproduziert