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.
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.
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.