2011-05-11 21:54:16
BASH Dateideskriptoren / file descriptors
Standardfehler-Ausgabe generell auf STDOUT umlenken mittels "exec 2>&1":
$ ( echo ERROR >&2; ) |grep NIX ERROR $ ( exec 2>&1; echo ERROR >&2; ) |grep NIX $
Generell STDIN umleiten bzw. schließen:
> echo TEST | ( cat -; ) TEST > echo TEST | ( exec </dev/null; cat -; ) bash: echo: write error: Datenübergabe unterbrochen (broken pipe) > echo TEST | ( exec <&-; cat -; ) bash: echo: write error: Datenübergabe unterbrochen (broken pipe) cat: -: Ungültiger Dateideskriptor cat: schließe Standardeingabe: Ungültiger Dateideskriptor >
Zusätzlichen Filedeskriptor öffnen, STDOUT (zwecks Weiterverarbeitung) duplizieren und am Ende wieder schließen:
> exec 3<&1 > echo 123|tee /proc/self/fd/3 123 123 > exec 3<&- > echo 123|tee /proc/self/fd/3 tee: /proc/self/fd/3: Datei oder Verzeichnis nicht gefunden 123