Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 5 Terminal-Ein- und Ausgabe
  gp 5.1 Von Terminals zu Pseudo-Terminals
  gp 5.2 Ausgabe
    gp 5.2.1 Der echo-Befehl
    gp 5.2.2 print (Korn-Shell only)
    gp 5.2.3 Der Befehl printf
    gp 5.2.4 Der Befehl tput – Terminalsteuerung
  gp 5.3 Eingabe
    gp 5.3.1 Der Befehl read
    gp 5.3.2 (Zeilenweise) Lesen einer Datei mit read
    gp 5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read)
    gp 5.3.4 Here-Dokumente (Inline-Eingabeumleitung)
    gp 5.3.5 Here-Dokumente mit read verwenden
    gp 5.3.6 Die Variable IFS
    gp 5.3.7 Arrays einlesen mit read (Bash und Korn-Shell only)
    gp 5.3.8 Shell-abhängige Anmerkungen zu read
    gp 5.3.9 Einzelnes Zeichen abfragen
    gp 5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen
    gp 5.3.11 Passworteingabe
  gp 5.4 Umlenken mit dem Befehl exec
  gp 5.5 Filedeskriptoren
    gp 5.5.1 Einen neuen Filedeskriptor verwenden
    gp 5.5.2 Die Umlenkung <>
  gp 5.6 Named Pipes
  gp 5.7 Menüs mit select (Bash und Korn-Shell only)
  gp 5.8 dialog und Xdialog
    gp 5.8.1 Entscheidungsfrage --yesno
    gp 5.8.2 Nachrichtenbox mit Bestätigung --msgbox
    gp 5.8.3 Hinweisfenster ohne Bestätigung --infobox
    gp 5.8.4 Text-Eingabezeile --inputbox
    gp 5.8.5 Ein einfacher Dateibetrachter --textbox
    gp 5.8.6 Ein Menü --menu
    gp 5.8.7 Auswahlliste zum Ankreuzen --checklist
    gp 5.8.8 Radiobuttons zum Auswählen --radiolist
    gp 5.8.9 Fortschrittszustand anzeigen --gauge
    gp 5.8.10 Verändern von Aussehen und Ausgabe
    gp 5.8.11 Kleines Beispiel
    gp 5.8.12 Zusammenfassung
  gp 5.9 gnuplot – Visualisierung von Messdaten
    gp 5.9.1 Wozu wird gnuplot eingesetzt?
    gp 5.9.2 gnuplot starten
    gp 5.9.3 Das Kommando zum Plotten
    gp 5.9.4 Variablen und Parameter für gnuplot
    gp 5.9.5 Ausgabe von gnuplot umleiten
    gp 5.9.6 Variablen und eigene Funktionen definieren
    gp 5.9.7 Interpretation von Daten aus einer Datei
    gp 5.9.8 Alles bitte nochmals zeichnen (oder besser speichern und laden)
    gp 5.9.9 gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb)
    gp 5.9.10 Plot-Styles und andere Ausgaben festlegen
    gp 5.9.11 Tricks für die Achsen
    gp 5.9.12 Die dritte Dimension
    gp 5.9.13 Zusammenfassung

Kapitel 5 Terminal-Ein- und Ausgabe

Bisher wurde die Ausgabe auf dem Bildschirm immer verwendet, ohne jemals näher darauf eingegangen zu sein. Zur perfekten Interaktion gehört neben der Bildschirmausgabe die Benutzereingabe. In diesem Kapitel werden Sie alles Nötige zur Ein- und Ausgabe erfahren. Außerdem soll der Begriff »Terminal« ein wenig genauer erläutert werden.


Rheinwerk Computing

5.1 Von Terminals zu Pseudo-Terminaltoptop

Obwohl in der Praxis heute eigentlich keine echten Terminals mehr verwendet werden, ist von ihnen immer noch die Rede. Terminals selbst sahen in der Regel aus wie gewöhnliche Desktop-Computer, meist mit einem schwarz-weißen (bzw. schwarz-grünen) Bildschirm, obwohl für ein Terminal nicht zwangsläufig ein Monitor genutzt werden muss. Solche Terminals waren über eine Leitung direkt mit einem UNIX-Rechner verbunden – also sind (waren) Terminals niemals Bestandteil des Betriebssystems selbst. Ein Betriebssystem lief auch ohne Terminal weiter (ähnlich, wie Ihr System auch ohne eine Internetverbindung läuft). Wenn ein solches Terminal eingeschaltet wurde, wartete schon ein Prozess namens »getty« (Get Terminal) »horchend« darauf und öffnete eine neue Session (Sitzung). Es wurde bereits erwähnt, dass eine Session nichts anderes ist, als die Zeit, ab der sich ein Benutzer mit einer Login-Shell eingeloggt hat, und die endet, wenn dieser sich wieder vom System verabschiedet.

Heute werden kaum noch echte Terminals (im eigentlichen Sinne) eingesetzt, sondern vorzugsweise Terminal-Emulationen. Terminal-Emulationen wiederum sind Programme, die vorgeben, ein Terminal zu sein.

Unter den meisten Linux-UNIX-Systemen stehen einem mehrere »virtuelle« Terminals zur Verfügung, die mit der Tastenkombination (Strg)+(Alt)+(F1) bis meistens (Strg)+(Alt)+(F7) erreicht werden können. Wenn Ihr System hochgefahren wird, bekommen Sie in der Regel als erstes Terminal (Strg)+ (Alt)+(F1) zu Gesicht. Arbeiten Sie ohne grafische Oberfläche, so ist dies gewöhnlich auch Ihre Login-Shell. Bei einer grafischen Oberfläche wird zumeist ein anderes Terminal (unter Linux bspw. (Strg)+(Alt)+(F7)) benutzt. Trotzdem können Sie jederzeit über (Strg)+(Alt)+(Fn) eine »echte« Login-Shell verwenden.

Auf jeder dieser Textkonsolen ((Strg)+(Alt)+(F1) bis (Strg)+(Alt)+(Fn)) »horchen« die Getty-Prozesse, bis sich ein Benutzer einloggt, so zum Beispiel:

you@host > ps -e | grep getty
 3092 tty1     00:00:00 getty
 3093 tty2     00:00:00 getty
 3095 tty4     00:00:00 getty
 3096 tty5     00:00:00 getty
 3097 tty6     00:00:00 getty

Unter Linux werden Sie hierbei statt »getty« vermutlich den Namen »mingetty« vorfinden. Im Beispiel fällt außerdem auf, dass die Textkonsolen »tty0« und »tty3« fehlen. Dies kann nur bedeuten, dass sich hier jemand eingeloggt hat:

you@host > who | grep tty3
tot      tty3         Mar  1 23:28

Sobald der User »tot« seine Session wieder beendet, wird ein neuer Getty-Prozess gestartet, der horchend darauf wartet, dass sich wieder jemand in der Textkonsole »tty3« einloggt.

Die Textfenster grafischer Oberflächen werden als Pseudo-Terminal bezeichnet (Abk. »pts« oder auch »ttyp« – betriebssystemspezifisch). Im Gegensatz zu einer Terminal-Emulation verläuft die Geräteeinstellung zu den Pseudo-Terminals dynamisch – sprich, ein Pseudo-Terminal existiert nur dann, wenn eine Verbindung besteht. In welchem Pseudo-Terminal Sie sich gerade befinden, sofern Sie unter einer grafischen Oberfläche eine Konsole geöffnet haben, können Sie mit dem Kommando tty ermitteln:

[ --- Linux --- ]
you@host > tty
/dev/pts/40
[ --- oder unter FreeBSD --- ]
you@host > tty
/dev/ttyp1

Der Name eines solchen Pseudo-Terminals ist eine Zahl im Verzeichnis /dev/pts. Die Namensvergabe beginnt gewöhnlich bei 0 und wird automatisch erhöht. Einen Überblick, welche Pseudo-Terminals gerade für welche User bereitgestellt werden, finden Sie im entsprechenden Verzeichnis:

you@host > ls -l /dev/pts
insgesamt 0
crw--w----  1 tot tty 136, 37 2005–03–01 22:46 37
crw-------  1 tot tty 136, 38 2005–03–01 22:46 38
crw-------  1 tot tty 136, 39 2005–03–01 22:46 39
crw-------  1 you tty 136, 40 2005–03–02 00:35 40

Hier finden Sie insgesamt vier Pseudo-Terminal-Einträge. Drei für den User »tot« und einen für »you«.

Das Gleiche finden Sie auch unter BSD-UNIX mit

you@host > ls -l /dev/ttyp*
crw-rw-rw-  1 root    wheel    5,   0 22 Mär 21:54 /dev/ttyp0
crw--w----  1 martin  tty      5,   1 13 Mai 08:58 /dev/ttyp1
crw--w----  1 martin  tty      5,   2 13 Mai 07:43 /dev/ttyp2
crw--w----  1 martin  tty      5,   3 13 Mai 08:48 /dev/ttyp3
crw-rw-rw-  1 root    wheel    5,   4 13 Mai 08:48 /dev/ttyp4
crw-rw-rw-  1 root    wheel    5,   5 12 Mai 16:31 /dev/ttyp5
crw-rw-rw-  1 root    wheel    5,   6 12 Mai 23:01 /dev/ttyp6
crw-rw-rw-  1 root    wheel    5,   7 12 Mai 14:37 /dev/ttyp7
crw-rw-rw-  1 root    wheel    5,   8 12 Mai 14:22 /dev/ttyp8
crw-rw-rw-  1 root    wheel    5,   9 12 Mai 14:26 /dev/ttyp9
crw-rw-rw-  1 root    wheel    5,  10 12 Mai 17:20 /dev/ttypa
crw-rw-rw-  1 root    wheel    5,  11 23 Apr 11:23 /dev/ttypb
...

nur mit dem Unterschied, dass bei der Namensvergabe der Wert nach 9 (»ttyp9«) nicht mehr um 1 inkrementiert wird, sondern mit dem ersten Buchstaben des Alphabets fortgefahren wird.

Pseudo-Terminals können neben den normalen Terminalverbindungen auch im Netzwerk (TCP/IP) eingesetzt werden. Dies ist möglich, weil der X-Server für grafische Anwendungen auch über ein Netzwerkprotokoll verfügt und damit verbunden ist.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
 << zurück
  
  Zum Katalog
Zum Katalog: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Katalog: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Katalog: Linux Handbuch






 Linux Handbuch


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de