Dazu nutzt man eine Spezialform des Befehls exec: Werden als Parameter nur Umleitungen angegeben, so leitet die Shell die gewünschten Kanäle permanent um.
#!/bin/bash exec 2>> dateiname.log echo "Normale Ausgabe" echo "An stderr" >&2 echo "das folgende macht einen Fehler" TEST=`gibtsnicht ` echo "Das geht auch in Pipes:" LINES=`lsx -1 $TREE | egrepx -v '^.+$' | wc -l`
Startet man das Script, so erhält man auf der Konsole diese Ausgabe:
Normale Ausgabe das folgende macht einen Fehler Das geht auch in Pipes:
Das sind die Ausgaben auf der Standard-Ausgabe.
Die Log-Datei enthält die Ausgabe der Fehlermeldungen:
An stderr ./logtest: line 7: gibtsnicht: command not found ./logtest: line 9: lsx: command not found ./logtest: line 9: egrepx: command not found
Sollen alle Ausgaben in die Logdatei umgeleitet werden, so verwendet man
exec >> dateiname.log 2>&1