Home / LinuxUser / 2007 / 07 / Datenfluss

Top-Beiträge

Flyer mit Scribus und GIMP druckereigerecht erstellen
(276 Punkte bei 13 Stimmen)
Wenn Träume wahr werden
(229 Punkte bei 11 Stimmen)
Problem: Schädlinge
(195 Punkte bei 6 Stimmen)
Mandriva-Navi
(188 Punkte bei 5 Stimmen)
Daisy das Dock
(179 Punkte bei 5 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Partner-Links:

PC + Linux Hilfe finden Sie unter pchilfe.org
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Gewinnspiele.

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

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 Ordner
$ cd Ordner
$ cp ../Ordner2/* .

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

$ mkdir Ordner ; cd Ordner ; cp ../Ordner2/* .

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 Datei && rm Datei

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 Ordner || mkdir Ordner

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:

Befehl < Eingabe > Ausgabe 2>Fehler

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) Befehl > Datei Schreibt die Standardausgabe von Befehl in Datei.
1 (stdout) Befehl >> Datei Hängt die Standardausgabe von Befehl an Datei an.
2 (stderr) Befehl 2> Datei Lenkt die Standardfehlerausgabe von Befehl in Datei um.
2 (stderr) Befehl 2>> Datei Hängt die Standardfehlerausgabe von Befehl an Datei an.
1 (stdout) und 2 (stderr) Befehl > Datei 2>&1 Schreibt Standardausgabe und Standardfehlerausgabe von Befehl in dieselbe Datei.
1 (stdout) und 2 (stderr) Befehl > Datei 2> Datei2 Standardausgabe von Befehl landet in Datei, die Standardfehlerausgabe schreibt die Shell nach Datei2 geschrieben.
0 (stdin) Befehl < Datei Leitet Datei in Standardeingabe von Befehl um.
Kommentare
Einem Freund empfehlen    Druckansicht

Wertung: 156 Punkte (8 Stimmen)

Infos zur Publikation

Dieser Artikel stammt aus der Zeitschrift LinuxUser.

Aktuelles Cover

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Für weitere Informationen zum Heft klicken Sie hier.

Möchten Sie ein Probeabo (drei Ausgaben für 3 Euro) oder ein Jahresabo (ab EUR 56,10) bestellen, klicken Sie hier.

Tipp der Woche

Daisy das Dock
Marcel Hilzinger, 15.03.2010 08:09, 1 Kommentare

Es gibt zahlreiche Versuche, das traditionelle Panel durch ein optisch ansprechenderes oder anders gestaltetes Dock zu ersetzen. Die meisten Docks sind allerdings lediglich ein Imitat des Mac-...

Aktuelle Fragen

Computer schaltet nicht aus
Jens Döring, 15.03.2010 02:33, 3 Antworten
Hallo, ich nutze openSUSE 11.2 und habe seit einem Update folgendes Problem: - Computer schal...
ixquick.com
des pastscho, 13.03.2010 14:42, 2 Antworten
Hallo Leute Was haltet ihr von ixquick.com ? Die schreiben datenschutzfreundlichste Suchmasch...
gnome-panel CPU-Last 100%
Enrico Päschke, 09.03.2010 14:15, 4 Antworten
Hallo, ich verwende Gnome (2.28) und Debian Testing. Seit kurzem habe ich das Problem, dass de...
Schreibschutz aufheben
Christoph-J.Walter , 08.03.2010 10:31, 3 Antworten
Ich habe eine Mail mit Anhang (seriös) erhalten. Das Dokument ist schreibgeschützt. Ich möchte ab...
gnome-desktop unaufgefordert installiert
hans kellermann, 28.02.2010 13:05, 6 Antworten
Hi Linuxers, (SUSE 11.2, KDE4.4.0) updater-applet hatte einen großen Schwung an neuen updates, d...