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

Inhaltsverzeichnis
Vorwort
Über die Autoren
Über dieses Buch
Linux vs. BSD
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Tools zur Dateibearbeitung
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerk-Grundlagen
11 Anwendersoftware für das Netzwerk
12 Netzwerkdienste
13 Mailserver unter Linux
14 LAMP
15 DNS-Server
16 Secure Shell
17 Die grafische Oberfläche
18 Window-Manager und Desktops
19 X11-Programme
20 Multimedia und Spiele
21 Softwareentwicklung
22 Crashkurs in C und Perl
23 Sicherheit
24 Prozesse und IPC
25 Bootstrap und Shutdown
26 Dateisysteme
27 Virtualisierung und Emulatoren
A Die Installation
B Lösungen zu den einzelnen Aufgaben
C Kommandoreferenz
D X11-InputDevices
E MBR
F Die Buch-DVDs
G Glossar
H Literatur

Download:
- ZIP, ca. 6,3 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das distributionsunabhängige Handbuch
Buch: Linux

Linux
2., aktualisierte und erweiterte Auflage
1119 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1090-4
gp 3 Die Shell
  gp 3.1 Was ist eine Shell?
    gp 3.1.1 Eine Shell verlassen
    gp 3.1.2 nologin
    gp 3.1.3 Die Login-Shell wechseln
  gp 3.2 Welche Shells gibt es?
  gp 3.3 Welche Shell für dieses Buch?
  gp 3.4 Die Konsolen
  gp 3.5 screen
    gp 3.5.1 screen verwenden
  gp 3.6 Die Shell anwenden
    gp 3.6.1 Vor- und Nachteile der Shellskripts
  gp 3.7 Grundlagen der Shell-Nutzung
    gp 3.7.1 Programme starten
    gp 3.7.2 Kommandos aneinanderreihen
    gp 3.7.3 Mehrzeilige Kommandos
    gp 3.7.4 Alias, shell-intern oder extern?
    gp 3.7.5 Shell-Aliase
    gp 3.7.6 Verzeichniswechsel
    gp 3.7.7 echo
    gp 3.7.8 Shell-Variablen
    gp 3.7.9 Kommandosubstitution
  gp 3.8 Ein- und Ausgabeumlenkung
    gp 3.8.1 Die Ausgabeumlenkung
    gp 3.8.2 Die Fehlerumlenkung
    gp 3.8.3 Die Ausgabe an eine Umlenkung anhängen
    gp 3.8.4 Eine Ausgabe in eine bestehende Datei umlenken
    gp 3.8.5 Die Eingabeumlenkung
  gp 3.9 Pipes
    gp 3.9.1 Duplizierung der Ausgabe mit tee
    gp 3.9.2 Named Pipes (FIFOs)
  gp 3.10 Subshells und Kommandogruppen
  gp 3.11 Effektives Arbeiten mit der Bash
    gp 3.11.1 Die Kommando-History
    gp 3.11.2 Automatische Vervollständigung von Dateinamen
  gp 3.12 xargs
  gp 3.13 Zusammenfassung
  gp 3.14 Aufgaben


Galileo Computing

3.9 Pipes  downtop

Eine ähnliche Möglichkeit wie die Ein- und Ausgabeumlenkung bieten sogenannte Pipes. Pipes stellen eine Art der Interprozess-Kommunikation dar, für die es in diesem Buch ein eigenes Kapitel gibt. In diesem Abschnitt beschäftigen wir uns ausschließlich mit dem Nutzen und der Anwendung von Pipes in der Shell.

Eine Shell kann als eine Art Kombination aus Aus- und Eingabeumlenkung angesehen werden. Dabei werden die Ausgaben eines Programms an ein anderes weitergeleitet, das diese Ausgaben als Eingabe verwendet. Im Gegensatz zur Ausgabeumlenkung wird die Ausgabe eines Programms also nicht in eine reguläre Datei geschrieben, sondern direkt an ein Programm weitergeleitet. Und im Gegensatz zur Eingabeumlenkung kommt die Eingabe nicht von irgendeiner regulären Datei, sondern direkt von einem anderen Programm.

Zur Verdeutlichung dieser Funktionalität soll ein Beispiel dienen, denn daran lernt man solcherlei Wissen am einfachsten.

Um dieses Beispiel zu verstehen, müssen Sie wissen, dass das Programm more eine Datei seitenweise auf dem Monitor ausgibt.

Wir möchten in diesem Beispiel erreichen, dass die Ausgaben des Programms ls seitenweise auf dem Bildschirm erscheinen. Dazu sollen die Ausgaben von ls an more weitergeleitet werden.

Diese Weiterleitung erfolgt mit einem Pipe-Operator (|). Dieser Strich wird zwischen die beiden Programme gesetzt, was dann folgendermaßen eingegeben wird:

user$ ls /usr/bin | more 
Mail 
a2p 
addftinfo 
addr2line 
afmtodit 
afslog 
apply 
apropos 
ar 
...

Listing 3.53    Pipe zwischen ls und more

Probieren Sie es einmal aus – eine Seite weiter »blättert« man durch Drücken der Leertaste.

Mehrere Pipes

Es ist übrigens auch möglich, mehrere Pipes in einem Befehl zu verwenden. Dies könnte dann beispielsweise folgendermaßen aussehen:

user$ ls -l | awk '{ print $5 }' | sort | uniq

Listing 3.54    Mehrere Pipes

Die Standardfehlerausgabe (STDERR) wird nicht über Pipes weitergeleitet. Dies kann man jedoch umgehen, indem man STDERR an STDOUT anhängt: ProgrammA 2>&1 | ProgrammB


Galileo Computing

3.9.1 Duplizierung der Ausgabe mit tee  downtop

Manchmal kommt es vor, dass man die Ausgabe eines Programms sowohl in eine Datei umleiten als auch gleichzeitig auf dem Bildschirm ausgeben möchte. Hier schafft das Programm tee Abhilfe. tee gibt die ihm eingegebene bzw. eingeleitete Ausgabe auf dem Bildschirm und in einer Datei aus.

user$ ls | tee log.txt 
CVS 
Makefile 
TODO 
ZEITPLAN 
anhg_komref.aux 
anhg_komref.tex 
...

Listing 3.55    Pipes mit tee


Galileo Computing

3.9.2 Named Pipes (FIFOs)  toptop

Named Pipes (sogenannte FIFOs) erweitern die Fähigkeiten einer Pipe. Eine FIFO muss zunächst als Datei im Dateisystem erzeugt werden. Dies wird mit dem Programm mkfifo bewerkstelligt. Der Vorteil gegenüber einer Pipe ist dabei, dass mehrere Prozesse diese FIFO verwenden können.

FIFOs arbeiten nach dem First-In-First-Out-Prinzip (daher der Name). Das bedeutet: Die Daten, die zuerst in eine FIFO geschrieben werden, werden auch als Erste wieder vom lesenden Prozess empfangen.

Das folgende Listing demonstriert diese Möglichkeit anhand einer Endlosschleife. Zunächst wird mit dem Programm mkfifo eine FIFO angelegt. Das tee-Programm lassen wir in die FIFO hineinschreiben, aber gleichzeitig durch Eingabeumlenkung aus ihr lesen. Das bedeutet, dass das Gelesene sofort wieder hineingeschrieben wird. Sobald also Daten in die FIFO geschrieben werden, liest tee diese so lange aus und schreibt sie so lange wieder in die FIFO hinein, bis der Wärmetod des Universums eintritt, der Strom ausfällt oder der Rechner abfackelt.

Doch um den Prozess anzustoßen, schreiben wir einen String, nämlich »Endlosschleife« in die FIFO hinein. Es ist wichtig, dass auch dieser Prozess im Hintergrund gestartet wird, denn irgendwann soll diese Ausgabe ja dann doch gestoppt werden, um nicht das System abzuschießen.

Nachdem eine Sekunde durch sleep (siehe Kommandoreferenz) gewartet wurde, wird das Programm tee durch den Aufruf des pkill-Programms beendet. pkill beendet alle Prozesse, in denen der angegebene Name vorkommt. Führen Sie diesen Test auf keinen Fall als Superuser auf einem Multiuser-System durch, und bedenken Sie, dass alle anderen tee-Prozesse, für die der Benutzer die Beendigungsberechtigung besitzt, ebenfalls beendet werden!

user$ mkfifo fifo 
user$ ls -l fifo 
prw------- 1 cdp_xe cdp_xe 0 Mar 22 19:44 fifo 
user$ tee fifo < fifo& 
[1] 2702 
user$ echo "Endlosschleife" > fifo & ; 
>       sleep 1; pkill tee 
[1] 18277 
Endlosschleife 
Endlosschleife 
Endlosschleife 
Endlosschleife 
... 
... 
Endlosschleife 
Endlosschleife 
[1]  + terminated  tee fifo < fifo

Listing 3.56    Verwendung einer FIFO in der Shell

Wie Ihnen vielleicht aufgefallen sein dürfte, wird eine Pipe beim »langen« Listing mit ls mit einem p gekennzeichnet. Dieses p steht für (named) Pipe und zeigt Ihnen an, dass es sich um keine reguläre Datei handelt.

Versuchen Sie einmal, mit dem Programm file den Typ der Datei anzeigen zu lassen.



Ihr Kommentar

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






 <<   zurück
  
  Zum Katalog
Zum Katalog: Linux






 Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Einstieg in Linux






 Einstieg in Linux


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: Praxisbuch Netzwerk-Sicherheit






 Praxisbuch
 Netzwerk-Sicherheit


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de