Umleiten von Datenströmen

Man den Weiterleitungsoperatoren > und < kann man Ausgaben in Dateien umlenken statt sie auf den Bildschirm auszugeben und Eingaben aus Dateien lesen statt sie von der Tastatur zu lesen.

Ausgabeumleitung

Der Befehl

echo "Hello proggen.org"

gibt „Hello proggen.org“ auf dem Bildschirm aus, möchte man den Text lieber in eine Datei verschieben kann man

echo "Hello proggen.org" > hello.txt

eingeben.

Eine eventuell bereits vorhandene Datei hello.txt wird zuvor gelöscht. Häufig möchte man jedoch Ausgaben wie ein Log-File erstellen, also einfach nur Zeilen hinten anfügen:

echo "Loggerausgabe" >> hello.txt

Diese Zeile wird nun am Ende der Datei hello.txt angefügt.

Eingabeumleitung

Wie bei der Pipe lassen sich aber auch die Eingabedatenströme umlenken. Hierfür verwendet man den Operator <

cat < hello.txt

Im Gegensatz zu cat hello.txt ist hello.txt hier kein Argument für cat, das cat auffordert, die Datei zu laden, sondern die Datei wird von der bash geladen und über die Standardeingabe an cat weitergereicht. Das Ergebnis ist in diesem einfachen Beispiel das Gleiche.

Befehle, die jedoch nur von der Standardeingabe lesen, lassen sich so aus Dateien mit Daten versorgen.

Analog zu » gibt es auch einen « Operator. Hier wird jedoch keine Datei angegeben, sondern eine Endmarkierung. Das bedeutet, dass man danach solange Text eingeben kann, bis man die Endmarkierung eingegeben und mit Return bestätigt hat:

xin@proggen.org:~$ cat << EOT
> Dies ist ein Text
> EOT
Dies ist ein Text

Die beiden Zeilen mit > zu Beginn sind die Eingabeaufforderung der Bash und ich gab Dies ist ein Text und anschließend EOT ein. EOT steht für End-Of-Text, aber es darf auch jede andere, beliebige Kombination von Zeichen sein. Nachdem die Bash den gesuchten Text „EOT“ gefunden hat, gibt sie den Text bis zum gesuchten Text über die Standardeingabe an das Programm weiter - also in unserem Fall cat. Dieses gibt den Text anschließend wieder auf dem Bildschirm aus.

Dies wird vorrangig in Skripten verwenden, sogenannten Here-Skripts.