next up previous contents index
Next: su Up: Von GNU's, Muscheln und Previous: strace

Subsections


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

Beispiel:

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
$ _

Autor:

David MacKenzie  


next up previous contents index
Next: su Up: Von GNU's, Muscheln und Previous: strace

Das Linux Anwenderhandbuch
(C) 1997 LunetIX