Linux Essentials / Macht der Kommandozeile

Umleitungen und Pipes

Michael Gisbers

2021-04-24

Einleitung

Auf den folgenden Slides sind die im Vortrag verwendeten Kommandozeilen-Aufrufe hinterlegt.

Umleitung in eine Datei mit >

  • Falls die Datei existiert wird sie überschrieben.
  • Falls sie nicht existiert wird die Datei neu angelegt.
user@linux $ echo "Hallo Welt" >/tmp/datei.txt

Umleitung in eine Datei mit >>

  • Falls die Datei existiert wird die Ausgabe angehangen.
  • Falls sie nicht existiert wird die Datei neu angelegt.
user@linux $ echo "Hallo Welt" >>/tmp/datei.txt

Daten aus einer Datei einlesen

Mit < werden Daten aus einer bestehenden Datei gelesen.

user@linux $ cat < /tmp/datei.txt

Daten aus einem HERE Document lesen

Alle Daten zwischen HERE und HERE werden in die Eingabe umgeleitet

user@linux $ cat <<HERE
Mein HERE document
geht bis
HERE

Daten aus der Kommandozeile einlesen

Die hinter dem <<< eingegebenen Daten werden in die Eingabe umgeleitet.

user@linux $ cat <<<"Dieser Text landet in der Eingabe"

Die unterschiedlichen Kanäle

  • 0 - Standardeingabe
  • 1 - Standardausgabe
  • 2 - Fehlerausgabe

Alle Ausgaben nach /dev/null umleiten

Statt eines Kanals können auch alle Ausgaben mittels & umgeleitet werden.

user@linux $ ls /tmp/nicht_existierende_datei &>/dev/null

Einen Kanal in einen anderen umleiten

Die Reihenfolge der Umleitungen ist entscheidend.

user@linux $ ls /tmp/nicht_existierende_datei >/dev/null 2>&1

Umleitung über eine pipe

Die Standardausgabe des ersten Befehls wird an die Standardeingabe des nächsten Befehls weitergeleitet.

user@linux $ echo "HAL 9000" | tr A-Z B-ZA

Umleitung über eine named pipe

Die Standardausgabe des ersten Befehls wird an die Standardeingabe des nächsten Befehls weitergeleitet. Dabei kann die pipe auch einen Namen haben.

user@linux $ mkfifo "/tmp/pipe" 
user@linux $ echo "HAL 9000" >/tmp/pipe &
user@linux $ tr A-Z B-ZA </tmp/pipe
user@linux $ rm "/tmp/pipe"