Next: su
Up: Von GNU's, Muscheln und
Previous: strace
Subsections
stty setzt die Terminalparameter oder zeigt sie an
stty [-ag] [-all] [-save] [Einstellungen ...]
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
- -a
- zeigt alle Einstellungen in lesbarer Form
- -g
- gibt alle Einstellungen in einer Form, die beim Zurücklesen
(als Kommandozeilenargument) die gleichen Einstellungen reproduziert
Das folgende Kommando gibt alle Einstellungen der seriellen
Schnittstelle /dev/ttyS1 aus.
$ stty -a < /dev/ttyS1
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
-ixon -ixoff -iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab3
bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl
-noflsh -xcase -tostop -echoprt -echoctl -echoke
$ _
Ein weiteres Beispiel zeigt, wie das aktuelle Terminal, das zuerst
durch eine offenbar fehlerhafte Eingabe durcheinandergebracht worden ist, wieder ,,saniert``
werden kann:
$ monster -d terminal
$ pwd
/usr/local/lib
$ cd
$ stty sane
$ pwd
/home/she
$ _
David MacKenzie
Next: su
Up: Von GNU's, Muscheln und
Previous: strace
Das Linux Anwenderhandbuch
(C) 1997
LunetIX