====== 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 [[bash:cmd:cat]]. Dieses gibt den Text anschließend wieder auf dem Bildschirm aus. Dies wird vorrangig in Skripten verwenden, sogenannten [[bash:script:stdin|Here-Skripts]].