Home / LinuxUser / 2007 / 07 / Datenfluss

Top-Beiträge

GIMP - Auswahl und Ebenen
(324 Punkte bei 38 Stimmen)
GIMP - Laserschwert
(322 Punkte bei 41 Stimmen)
Panorama ohne Weitwinkel
(272 Punkte bei 16 Stimmen)
Ein erstes Resümee
(247 Punkte bei 20 Stimmen)
Re: Mehrere Partitionen auf USB-Stick
(233 Punkte bei 9 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 8500 Shops,
3.1 Mio Artikel. Alle Bestseller, Gutscheine und Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Bei Freeware bietet Ihnen kostenlose Software Downloads von Programmen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Datenfluss

Ein-/Ausgabeumleitung

01.07.2007 Das Arbeiten auf der Shell hat viele Vorteile – abgesehen davon, dass es oft schneller geht, ein Kommando einzutippen als ein grafisches Programm zu bemühen, eröffnen Pipelines, Umleitungen und Kommandoketten zusätzliche Möglichkeiten.

Auf gute Zusammenarbeit – wer Shellbefehle miteinander kombiniert, spielt die ganze Stärke der Kommandozeile aus. Dazu gehört nicht nur das Verketten einzelner Programme, sondern auch das Weiterleiten der Ausgaben: Scrollen die Informationen beispielsweise zu schnell über den Bildschirm, leiten Sie diese einfach in eine Datei um oder zeigen Sie seitenweise an.

Gut kombiniert

Mit wenigen Handgriffen verknüpfen Sie in der Bash einzelne Befehle miteinander. Anstelle von

$ mkdir replaceableOrdner
$ cd replaceableOrdner
$ cp ../replaceableOrdner2/* .

kombinieren Sie die einzelnen Arbeitsschritte und teilen dem Interpreter über das Semikolon mit, dass er alle Befehle direkt hintereinander ausführen soll:

$ mkdir replaceableOrdner ; cd replaceableOrdner ; cp ../replaceableOrdner2/* .

Noch mehr Kontrolle erhalten Sie, wenn Sie der Bash eine Bedingung stellen. So ist es beispielsweise möglich, einen zweiten (oder dritten oder n-ten) Befehl nur dann auszuführen, wenn ein anderes Kommando erfolgreich oder nicht erfolgreich war.

Um beispielsweise eine bestimmte Datei nur dann zu löschen, wenn sie vorhanden ist, stellen Sie dem Kommando Rm einen einfachen Test voran:

test -w replaceableDatei && rm replaceableDatei

Das gleichnamige Programm Test schaut in diesem Fall nach, ob die Datei existiert und schreibbar ist (Parameter -w); nur wenn das der Fall ist, löscht Rm diese. Wer häufig Software aus den Quellen baut und dabei den Dreierschritt ./configure; make; make install einsetzt, kann alle drei Befehle miteinander kombinieren und durch && sicherstellen, dass jeder folgende Befehl nur weitermacht, wenn der Vorgänger keine Fehler produziert hat:

./configure && make && make install

Neben der Option -w hat das Test-Kommando noch einige weitere praktische Flags zu bieten. So schauen Sie zum Beispiel mit -d nach, ob ein Verzeichnis schon existiert, und nur wenn dieses nicht der Fall ist, erstellen Sie es:

test -d replaceableOrdner || mkdir replaceableOrdner

Dabei übernehmen die zwei Pipezeichen zwischen den Befehlen die Funktion eines logischen Oder.

Kanalsystem

Insgesamt drei Kanäle gibt es für die Ein- und Ausgabe von Befehlen auf der Shell: Programme lesen ihre Daten von der Standardeingabe (STDIN, Kanal 0) oder aus einer Datei, die Programmausgaben landen auf der Standardausgabe (STDOUT, Kanal 1), und Fehlermeldungen werden auf die Standardfehlerausgabe (STDERR, Kanal 2) geschrieben:

replaceableBefehl < replaceableEingabe > replaceableAusgabe 2>replaceableFehler

Die Operatoren < und > verraten dabei die Richtung: Erfolgt die Standardeingabe nicht über die Tastatur, sorgt < dafür, dass der Befehl sie beispielsweise aus einer Datei einliest. Um hingegen die Ausgabe eines Kommandos in eine Datei umzuleiten, dient der Operator >. Die Fehlerausgabe erreichen Sie ebenfalls über >, allerdings spezifizieren Sie hier den Kanal durch Voranstellen des File Descriptors (2>). Tabelle "Shell-Umleitungen" zeigt eine Übersicht der gebräuchlichsten Umleitungsszenarien, und die folgenden Abschnitte zeigen detaillierte Anwendungsbeispiele.

Shell-Umleitungen

Kanal

Kommando

Ergebnis

1 (stdout) replaceableBefehl > replaceableDatei Schreibt die Standardausgabe von replaceableBefehl in replaceableDatei.
1 (stdout) replaceableBefehl >> replaceableDatei Hängt die Standardausgabe von replaceableBefehl an replaceableDatei an.
2 (stderr) replaceableBefehl 2> replaceableDatei Lenkt die Standardfehlerausgabe von replaceableBefehl in replaceableDatei um.
2 (stderr) replaceableBefehl 2>> replaceableDatei Hängt die Standardfehlerausgabe von replaceableBefehl an replaceableDatei an.
1 (stdout) und 2 (stderr) replaceableBefehl > replaceableDatei 2>&1 Schreibt Standardausgabe und Standardfehlerausgabe von replaceableBefehl in dieselbe replaceableDatei.
1 (stdout) und 2 (stderr) replaceableBefehl > replaceableDatei 2> replaceableDatei2 Standardausgabe von replaceableBefehl landet in replaceableDatei, die Standardfehlerausgabe schreibt die Shell nach replaceableDatei2 geschrieben.
0 (stdin) replaceableBefehl < replaceableDatei Leitet replaceableDatei in Standardeingabe von replaceableBefehl um.
Aktuelles Heft bestellen
Kommentare
Einem Freund empfehlen    Druckansicht

751 Hits
Wertung: 156 Punkte (8 Stimmen)

Infos zur Publikation

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Schöneres Gnome mit Faenza
Schöneres Gnome mit Faenza
Marcel Hilzinger, 19.08.2010 14:49, 0 Kommentare

Wer seinen Desktop liebt, verpasst ihm ab und zu ein optisches Update. Sehr gut eignen sich dazu neue Fensterdekorationen, ein neues Farbschema und natürlich ein neues Symbolset. Ein besonders...

Aktuelle Fragen

SUSE und Windows parallel betreiben, reparieren des BOOTMANAGERS
oli m., 31.08.2010 10:17, 6 Antworten
ich betreibe XP, VISTA, W7 und SUSE parallel auf einer Festplatte. wenn ich SUSE als letztes ins...
kmail link verweist auf firefox, umstellung wieder auf konqueror ???
oli m., 31.08.2010 10:06, 2 Antworten
seit firefox mit suse installiert wird, startet ein link in einer email automatisch auch firefox....
SUSE 11.3 - nvidia 9800GT+ - DUALMONITOR Installation/Einstellung
oli m., 31.08.2010 09:57, 2 Antworten
Grafikkarte: nvidia GForce 9800GT+ Monitore: 2x Medion MD 20094 1920x1200 SUSE 11.3 nach ins...
Tastatur / Maus blockiert
Roland M. Egloff, 30.08.2010 22:56, 0 Antworten
Hallo Linux Freunde, Die folgende Info. ist vielleicht für jemand nutzlich... Ich musste mi...
Erstellung von Newslettern unter Suse 11.3
Klaus Werner, 27.08.2010 09:45, 1 Antworten
Moin suchen ein Programm zur Erstellung von Newslettern. sollte unter Linux laufen. Jemand eine...