D.h. immer wenn normalerweise ein Zeichen von der Tastatur gelesen würde, wird es nun aus der angegebenen Datei gelesen - ebenso kann man umgekehrt alles in eine Datei schreiben, was sonst auf dem Bildschirm erscheinen würde.
Die Eingabe wird umgelenkt, indem man an die Kaommandozeile < filename (Kleinerzeichen, gefolgt von dem Namen der gewünschten Eingabedatei) anhängt. Alle Eingabezeichen werden dann aus der Datei filename gelesen.
Bei der Ausgabe muß man zwei Kanäle unterscheiden: Normale Ausgabe (stdout) und Fehlermeldungen (stderr). Diese werden nämlich von Programmen unterschiedlich ausgegeben: normale Ausgabe auf Kanal 1, Fehler auf Kanal 2.
Hängt man einfach > filename an eine Kommandozeile an, so wird nur die normale Ausgabe umgelenkt, die Fehlermeldungen erscheinen weiterhin am Terminal. Will man die Fehlermeldungen in der gleichen Datei, hängt man >& filename an.
Benutzt man nur >, wird immer eine neue Datei angelegt, d.h. eine evtl. bereits existierende wird gelöscht Es sei denn, man setzt die Shell-Variable noclobber). Möchte man die Ausgabe an eine bestehende Datei nur anhängen, so benutze man den >> - Operator.
Das Grundprinzip ist dasselbe, d.h. Umleitung stdin durch Anhängen von < filename, stdout durch > filename bzw. >> filename für append-Modus. Die Unterschiede beginnen jedoch bei den anderen Kanälen, bzw. wenn man mehrere Kanäle umleiten möchte.
Man kann jeden Kanal (nicht nur 0=stdin, 1=stdout, 2=stderr) umleiten, indem man hinter das Umleitungszeichen ein &number angibt. Zusätzlich kann man direkt vor dem Umleitungszeichen die Nummer des umzuleitenden Kanals (d.h. den filedescriptor) angeben. Die Reihenfolge der Umleitungen ist dabei signifikant, siehe erstes der Beispiele:
ls path 1>xxx 2>&1 ls path 2>&1 1>xxx ls path 1>out 2>errBeispiel 1 leitet stdout und stderr in die Datei xxx um. Den gleichen Effekt würde man in der csh mit ls path >& xxx erreichen. Im zweiten Beispiel erfolgt die Fehlerausgabe auf den Kanal, der vorher stdout war (z.B. das Terminal), nur stdout wird in eine Datei umgelenkt. Das dritte: stdout und stderr in verschiedene Dateien umleiten, ist mit csh nicht möglich.