Home / LinuxUser / 2007 / 07 / Datenfluss

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(243 Punkte bei 15 Stimmen)
Re: War doch klar...
(179 Punkte bei 5 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik 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.
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 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.
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1545 Hits
Wertung: 156 Punkte (8 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

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

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...
Skype für 64-Bit-Prozessor u. Suse 12.1
Klaus Sigerist, 05.02.2012 11:39, 3 Antworten
Hallo Gemeinde! Ich bin nur ein einfacher Nutzer und habe Probleme mit der Installation von Skyp...
8! Anfängerfrage :) Wie finde ich in Ubuntu die Datenträger (Bild, Text)
samuel leusam, 04.02.2012 15:53, 2 Antworten
Ich habe neu Ubuntu. Wenn ich die SD Karte im Laptop einstecke, erkennt er sie und gibt ihr den N...
OpenSuse 12.1-Service Kit 01/12
Christoph-J. Walter, 28.01.2012 08:52, 2 Antworten
Hallo Gemeinde, ich habe 12.1 neu installiert. Alles in Ordnung! Nun möchte ich das Service Kit (...