Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Linux Essentials//Die Einsteiger-Zertifizierung des LPI - Linup Front ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
114 8 Standardkanäle und Filterkommandos<br />
make >make.log 2>&1<br />
make 2>&1 >make.log<br />
führen zu sehr unterschiedlichen Resultaten. Im zweiten Fall wird erst die<br />
Standard-Fehlerausgabe dorthin geleitet, wohin die Standard-Ausgabe geht<br />
(/dev/tty, wo sie sowieso schon hingeht) und anschließend die Standard-<br />
Ausgabe in die Datei make.log geschickt, was an dem Ziel der Standard-Fehlerausgabe<br />
aber nichts mehr ändert.<br />
Übungen<br />
C<br />
C<br />
C<br />
C<br />
C<br />
8.1 [2] Mit der Option -U können Sie ls dazu bringen, die Verzeichniseinträge<br />
unsortiert auszugeben. Trotzdem hat nach dem Kommando »ls -laU<br />
>inhalt« der Eintrag für inhalt in der Ausgabedatei immer noch die Länge<br />
Null. Woran könnte das liegen?<br />
8.2 [!2] Vergleichen Sie die Ausgabe der Kommandos »ls /tmp« und »ls /tmp<br />
>ls-tmp.txt« (wobei wir mit »Ausgabe« im zweiten Fall den Inhalt der Datei<br />
ls- tmp.txt meinen). Fällt Ihnen etwas auf? Falls ja, wie könnte man das Phänomen<br />
erklären?<br />
8.3 [!2] Warum ist es nicht möglich, eine Datei in einem Schritt durch eine<br />
neue Version zu ersetzen, etwa mit »grep xyz datei >datei«?<br />
8.4 [!1] Und was ist das Problem mit »cat bla >>bla« (eine nichtleere Datei<br />
bla vorausgesetzt)?<br />
8.5 [2] Wie würden Sie in der Shell eine Meldung so ausgeben, dass sie auf<br />
der Standard-Fehlerausgabe landet?<br />
Oft dient die Ausgabeumleitung nur dazu, das Ergebnis eines Programms abzuspeichern,<br />
um es dann mit einem anderen Kommando weiterzubearbeiten. <strong>Die</strong>se<br />
Art von Zwischenspeicherung ist jedoch nicht nur recht mühsam, sondern Sie<br />
müssen auch noch daran denken, die nicht mehr benötigten Dateien wieder zu löschen.<br />
<strong>Linux</strong> bietet daher eine direkte Verknüpfung von Kommandos durch Pipes<br />
an: <strong>Die</strong> Ausgabe eines Programms wird automatisch zur Eingabe <strong>des</strong> nächsten<br />
Programms.<br />
<strong>Die</strong> direkte Verknüpfung mehrerer Befehle zu einer solchen Kommando-<br />
Pipes<br />
direkte Verknüpfung<br />
mehrerer Befehle<br />
Pipeline<br />
8.1.3 Kommando-Pipelines<br />
Pipeline (»Rohrleitung«) erfolgt mit dem Zeichen |. Statt also wie im ersten Beispiel<br />
dieses Kapitels zunächst den Verzeichnisinhalt mit dem Kommando »ls<br />
-laF« in eine Datei inhalt umzulenken und diese dann mit less anzusehen, können<br />
Sie diesen Vorgang auch in einem Schritt ohne Zwischenspeicherung in einer<br />
Datei ausführen:<br />
$ ls -laF | less<br />
total 7<br />
drwxr-xr-x 12 hugo users 1024 Aug 26 18:55 ./<br />
drwxr-xr-x 5 root root 1024 Aug 13 12:52 ../<br />
drwxr-xr-x 3 hugo users 1024 Aug 20 12:30 fotos/<br />
-rw-r--r-- 1 hugo users 449 Sep 6 13:50 inhalt<br />
-rw-r--r-- 1 hugo users 15811 Aug 13 12:33 pingu.gif<br />
-rw-r--r-- 1 hugo users 14373 Aug 13 12:33 hobby.txt<br />
-rw-r--r-- 2 hugo users 3316 Aug 20 15:14 chemie.txt<br />
Derartige Befehlsfolgen können praktisch beliebig lang werden, auch ist eine abschließende<br />
Ausgabeumleitung in eine Datei möglich:<br />
Copyright © 2012 <strong>Linup</strong> <strong>Front</strong> GmbH