Eingabe- / Ausgabe-Umleitungen (I/O-Redirections)

stift-kappe-rot-1

Sogenannte I/O-Redirections (Eingabe- / Ausgabe-Umleitungen) sind ein sehr mächtiges Werkzeug für Linux- und UNIX-Betriebssysteme. Die Ausgaben von Befehlen wie ls oder cat werden normalerweise direkt im Terminal ausgegeben. Die in diesem Beitrag vorgestellten Notationen ermöglichen eine Umleitung solcher Ausgaben in Dateien oder auch in andere Befehle.

Standard-Output

Die Ausgaben eines Befehls werden grundsätzlich in den sogenannten Standard-Output (stdout) geleitet. Dieser leitet die Ergebnisse dann normalerweise direkt in die Ausgabe des Terminals um.

Umleitungen mit >

Mit > können die Ausgaben eines Befehls in Dateien umgeleitet werden. Die Ausgaben überschreiben dabei jeglichen Inhalt der angegebenen Datei. Bei mehrfacher Ausführung bleiben vergangene Ausgaben nicht erhalten.

Falls die angegebene Datei noch nicht existiert, wird sie neu angelegt.

Es folgt ein kurzes Beispiel mit dem Befehl ls.

Beispiel: >

Eingabe:

ls /home/hellberg/daten/ > verzeichnisse.txt

Ausgabe (cat verzeichnisse.txt):

edvberatung-hannover
haus-verwaltung-hannover
it-consulting-hannover
online-kurse
profi-tutorials

verzeichnisse.txt

Bemerkung:

Die neu erstellte Datei "verzeichnisse.txt" wird ebenfalls in die Ausgabe des ls-Befehls aufgenommen.

Umleitungen mit >>

Soll der Inhalt einer Datei nicht überschrieben, sondern stattdessen die neue Ausgabe an das Ende der Datei angehängt werden, so wird >> verwendet. Es folgt ein kurzes Beispiel.

Beispiel: >>

Eingabe:

date >> zeit.txt

Ausgabe (cat zeit.txt):

Do 6. Feb 12:03:55 CET 2020

Bemerkung:

Die von dem Befehl erstellte Datei zeit.txt enthält nun die Ausgabe des date Befehls. Bisher gibt es keine Abweichungen zur Funktionsweise im vorigen Beispiel.

Wiederholung der Eingabe:

date >> zeit.txt

Ausgabe (cat zeit.txt):

Do 6. Feb 12:03:55 CET 2020
Do 6. Feb 12:04:07 CET 2020

Bemerkung:

Die Datei "zeit.txt" wurde nicht überschrieben. Stattdessen wurde die Ausgabe der zweiten Ausführung des date Befehls an das Ende der Datei - in eine neue Zeile - geschrieben.

Standard-Input

Viele Befehle nehmen Eingaben aus dem sogenannten Standard-Input (stdin) an. Diese Eingaben werden normalerweise über die Tastatur durchgeführt. Auch hier kann eine Umleitung erfolgen, um beispielsweise den Inhalt einer Datei als Eingabe zu verwenden. Mit dem Operator < kann eine solche Umleitung erfolgen.

Beispiel: <

Ziel dieses Beispiels ist es, eine unsortierte Textdatei mit Benutzernamen in den sort Befehl zu leiten, um diese zu sortieren.

Inhalt der Textdatei (cat benutzer.txt):

hedv
admina
hellberg
bibo

Eingabe:

sort < benutzer.txt

Ausgabe:

admina
bibo
hedv
hellberg

Bemerkung:

Der Inhalt der Datei "benutzer.txt" wurde an den sort Befehl weitergeleitet. Dieser hat die Einträge dann sortiert und im Terminal ausgegeben.

Die Kombination von Input und Output

Auch eine Kombination beider Operatoren ist möglich. So können zum Beispiel die Inhalte einer Datei in einen Befehl und dessen Ausgabe in eine Datei geleitet werden.

Beispiel: < in Kombination mit >

Auch hier wird wieder die unsortierte Liste "benutzer.txt" an den sort Befehl übergeben. Anschließend erfolgt eine Umleitung in die Datei "benutzer_sortiert.txt"

Inhalt der Textdatei (cat benutzer.txt):

hedv
admina
hellberg
bibo

Eingabe:

sort < benutzer.txt > benutzer_sortiert.txt

Ausgabe (cat benutzer_sortiert.txt):

admina
bibo
hedv
hellberg

Pipelines ("Rohrleitungen")

Mit sogenannten Pipelines bzw. "Rohrleitungen" ist es möglich, mehrere Befehle miteinander zu verbinden. Der Standard-Output (stdout) des einen Befehls wird dabei in den Standard-Input (stdin) eines weiteren Befehls geleitet. Beliebig viele Befehle können auf diese Weise miteinander "verkettet" werden.

Zum Verständnis folgt nun ein kurzes Beispiel mit den beiden Befehlen sort und head.

Beispiel: Pipelines

Wir wollen wieder die "benutzer.txt" sortieren, anschließend jedoch nur den ersten Benutzer der sortierten Liste im Terminal ausgeben. Dazu wird die Ausgabe des Befehls sort mit einer Pipe in den Input des head Befehls übergeben.

Inhalt der Textdatei (cat benutzer.txt):

hedv
admina
hellberg
bibo

Eingabe:

sort benutzer.txt | head -n 1

Ausgabe:

admina

Das Video zu diesem Beitrag

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: