|
Pipes
Eine Pipe verbindet zwei Kommandos über einen temporären Puffer,
d. h. die Ausgabe vom ersten Programm wird als Eingabe vom zweiten Programm verwendet.Alles, was das erste Programm in den Puffer schreibt, wird in der gleichenReihenfolge vom zweiten Programm gelesen. Pufferung und Synchronisationwerden vom Betriebssystem vorgenommen. Der Ablauf beider Prozesse kann verschränkterfolgen. In einer Kommandofolge können mehrere Pipes vorkommen. DerPipe-Mechanismus wird durch das Zeichen "|" (senkrechter Strich) aktiviert:Kommando 1 | Kommando 2 Beispiel: Ausgabe der Dateien eines Verzeichnisses mit der Möglichkeit,
zu blättern:
Natürlich können auch mehrere Kommandos hintereinander
durch Pipes verbunden werden:
Kommando 1 | Kommando 2 | Kommando 3 | Kommando 4 | ...
Pipelines haben Vorrang vor anderen Formen der Ein- und Ausgabeumleitung. Bevor die
Shell mit der Ausführung der Einzelbefehle und der dazugehörenden Umleitungen
beginnt, baut sie die gesamte Pipeline zusammen: Sie erzeugt für jeden Abschnitt
einen neuen Prozeß und verbindet die Standardausgabe jedes Prozesses mit der
Standardeingabe des Nächsten. Will der Anwender die Fehlerausgabe eines Programms
ebenfalls durch die Pipeline schicken, kann er in Bourne-Shell-Skripten
foo 2>&1 | bar
schreiben. Da die Shell die Pipeline-Verbindung zuerst herstellt, landen die
Fehlermeldungen vom Programm foo auf der Standardeingabe von bar.
Kommandofolgen, die durch Pipes verbunden sind, werden auch als "Filter" bezeichnet.
Einige nützliche Filter sind in jedem UNIX-System verfügbar. Zum Beispiel:
head [-n] [datei(en)]
Ausgabe der ersten n Zeilen aus den angegebenen Dateien. Voreinstellung ist 10
Zeilen. Wird keine Datei angegeben, liest head von der Standardeingabe.
tail [-/+n] [bc[f|r]] [datei]
Ausgabe der letzten n Zeilen einer Datei. Voreinstellung für n ist 10. Wird
keine Datei angegeben, liest tail von der Standardeingabe.
Optionen |
+n | ab der n. Zeile ausgeben |
-n | die letzten n Zeilen ausgeben
Wird hinter die Zahl n ein 'b' gesetzt (z. B. -15b), werden nicht n Zeilen, sondern
n Blöcke ausgegeben. Wird hinter die Zahl n ein 'c' gesetzt (z. B. -200c), werden
nicht n Zeilen, sondern n Zeichen (characters) ausgegeben. |
-r | Zeilen in umgekehrter
Reihenfolge ausgeben (letzte zuerst). Geht nicht bei GNU-tail - stattdessen kann man
das Programm toc verwenden. |
-f | tail am Dateiende nicht beenden, sondern auf weitere Zeilen warten.
(Ende des Kommandos mit der CTRL-C-Taste). Damit kann man z. B. Logfiles beobachten, die
ständig wachsen. |
tee [-i] [-a] [datei]
Pipe mit T-Stück: Kopiert von stdin nach stdout und schreibt die Daten gleichzeitig
in die angegebene Datei.
Optionen |
-i | Ignorieren von Interrupts (Unterbrechungs-Taste) |
-a | Anhängen der Info an die angegebene Datei
(Voreinstellung: Überschreiben der Datei) |
wc [-lwc] [Datei(en)]
Dieses Kommando zählt Zeilen, Worte oder Zeichen in einer Datei. Wird kein
Dateiname angegeben, liest wc von der Standardeingabe. Normalerweise zählt
man damit in Skripten irgendwelche Ergebnisse. Optionen:
-l | Zähle Zeilen |
-w | Zähle Worte |
-c | Zähle Zeichen |
Weitere Filter sind more, less, tr, ....
|
|
|