titel_umleitung.png

Umleitung

Zu Befehl: Kanäle, Pipes und Tee

01.06.2004
Mit wenigen Handgriffen leiten Sie auf der Kommandozeile Ein- und Ausgaben von Befehlen um und kombinieren Kommandos. Wir stellen die benötigten Bash-Operatoren vor und zeigen, wie Sie mit dem Programm tee noch einen Zwischenschritt einlegen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

"Zu Befehl" stellt seit Jahren regelmäßig Shell-Kommandos vor und verrät Tricks und Kniffe, mit denen Sie Programme geschickt kombinieren. Dabei kommen immer wieder ganz selbstverständlich Umleitungsoperatoren zum Einsatz. Was genau dahinter steckt und was Sie alles umleiten können, erfahren Sie in dieser "Zu Befehl"-Folge.

Drei Kanäle

Für die Ein- und Ausgaben von Programmen gibt es drei "Standardkanäle": Laufende Programme erwarten ihren Input von der Standardeingabe (stdin), z. B. über die Tastatur. Normale Ausgaben schicken Programme auf die Standardausgabe (stdout), das ist in der Regel das Terminal-Fenster, in dem Sie das Programm gestartet haben. Zusätzlich gibt es eine Standardfehlerausgabe (stderr), die meist am gleichen Ort erscheint: Hier finden Sie eventuelle Fehlermeldungen des Befehls mit Hinweisen, die zur Problemlösung führen können. Zur Kennzeichnung der drei Kanäle dienen so genannte File Descriptors, die Standardkanäle werden hier einfach durchgezählt. stdin hat die Nummer 0, stdout die 1 und stderr die 2.

Wie diese drei Kanäle zusammenarbeiten, erkennen Sie schön an einem einfachen Beispiel:

huhn@asteroid:~$ /sbin/fsck /dev/hda7
Do you want to run this program?[N/Yes] : Yes
reiserfsck: Cannot not open filesystem on "/dev/hda7"
Warning… fsck.reiserfs for device /dev/hda7 exited with signal 6.

Im Terminal-Fenster erscheinen die normalen Ausgaben des Programmes, z. B. die Frage, ob das Programm wirklich ausgeführt werden soll. Die Antwort wird aus der Standardeingabe gelesen, das ist hier die Tastatur. Nach dem Bestätigen folgt eine Fehlermeldung, da die nötigen Root-Rechte fehlen. Diese Fehlermeldung gibt reiserfsck über die Standardfehlerausgabe aus.

Ein übersichtlicheres Beispiel ist der folgende grep-Aufruf:

huhn@asteroid:~$ grep bla *
datei1:bla
datei2:bla bla
grep: verz: Is a directory

Das Kommando grep sucht hier in allen Dateien nach dem Wort "bla". In datei1 und datei2 wird es fündig, bei verz beschwert es sich darüber, dass verz ein Verzeichnis und keine Datei ist. (Neuere grep-Versionen ignorieren Verzeichnisse klaglos, aber das im Test benutzte grep 2.4.2 von Debian Linux akzeptiert keine Verzeichnisse.)

In welche Richtung?

Woher ein Befehl seine Eingaben bezieht und wohin er seine Ausgaben schreibt, ist dem Programm egal. Mit speziellen Operatoren geben Sie den Standardkanälen eine neue Ausrichtung. Wollen Sie zum Beispiel die Standardausgabe nicht auf der Konsole sehen, verwenden Sie den Operator >:

huhn@asteroid:~$ grep bla * > grep_ergebnis
grep: verz: Is a directory

Statt des einfachen Operators > könnten Sie hier auch 1> schreiben – die Standardausgabe ist ja mit dem File Descriptor 1 belegt. Wird die 1 weggelassen, ist automatisch stdout gemeint. Während das Ergebnis des grep-Aufrufs in der Datei grep_ergebnis landet, erscheinen Fehlermeldungen weiterhin auf der aktiven Konsole. Wer also lieber die Standardfehlerausgabe umleitet und die Standardausgabe sehen möchte, verwendet statt dessen den Operator 2>:

huhn@asteroid:~$ grep bla * 2> grep_fehler
datei1:bla
datei2:bla bla

Interessiert die Fehlerausgabe eines Programmes nicht, können Sie diese statt in eine Datei auch nach /dev/null umleiten – diese "Pseudo-Datei" besitzt keinen Inhalt; alle Daten, die Sie auf dieses Gerät schreiben, werden ignoriert. Unerwünschte Fehlermeldungen lassen sich so geschickt aus der Welt schaffen:

grep bla * 2> /dev/null

Der >-Operator leitet nicht nur einfach um – er legt die danach genannte Datei an oder überschreibt sie, falls sie schon existiert. Sie können daher als Alternative das doppelte Größerzeichen >> verwenden: Gibt es die Zieldatei noch nicht, wird sie angelegt; besteht sie hingegen schon, werden die Ausgaben einfach angehängt.

Wer Standardausgabe und Standardfehlerausgabe gemeinsam in eine einzige Datei umleiten möchte, benutzt den Operator >&:

grep bla * >& grep_ergebnis

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Zu Befehl: date & cal
    Die Kommandozeilen-Tools cal und date erzeugen Kalender und bearbeiten Datum und Uhrzeit. Wenn man sie geschickt einsetzt, kann man daraus zum Beispiel eine kleine Geburtstagsverwaltung machen.
  • sed
    Der Stream-Editor sed hilft beim automatischen Verändern einer oder mehrerer Dateien, vereinfacht sich wiederholende Änderungen oder erstellt gleich ganze Konvertierungsprogramme. Monotone Aufgaben der Textverarbeitung lassen sich so im Handumdrehen lösen.
  • Zu Befehl
    MP3s hören, in wav-Dateien umwandeln, Playlists abspielen, mit Shell-Skripten zusammenarbeiten – das alles und noch viel mehr kann das Programm mpg123. Bringen Sie Ihre Kommandozeile zum Singen!
  • Sortiert und zugenäht
    Mit dem Kommando sort sortieren Sie Zeilen in Dateien oder aus der Standardeingabe. Als reines Sortierprogramm konzipiert, arbeitet das Tool oft mit anderen Programmen auf der Kommandozeile zusammen.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...