"Ulrich Fürst" <[EMAIL PROTECTED]> wrote: > Das war mir bisher nicht klar. Ich dachte das das so läuft, dass stderr > mit stdout zusammengeführt wird und das ganze dann nach /dev/null > umgleitet wird. Aber so wie ich das jetzt verstehe, stimmt das zwar erst > mal. Nur muss erst stdout nach /dev/null und dann stderr nach stdout > umgeleitet werden!? > > Nachdem ich das jetzt (hoffentlich) verstanden habe, kann > ich mir das vielleicht auch endlich mal merken!
Ich habe jedesmal Mühe, mir die Erklärung zu merken; mittlerweile weiß ich die Befehle auswendig... cdrecord $args 2>&1 >/dev/null 2>&1 verbindet den Programm-Ausgabekanal 2 (stderr) mit dem Shell-Kanal 1, das ist normalerweise dein Terminal. Aber danach wird der Shell-Kanal 1 (>/dev/null ist ja kurz für 1>/dev/null) mit dem Nulldevice verknüpft, und alles verschwindet. Andersherum cdrecord $args >/dev/null 2>&1 wird der Programm-Ausgabekanal 1 (stdout) auf das Nulldevice geleitet, und danach wird stderr auf den Shell-Ausgabekanal 1 umgeleitet - wo mittlerweile nichts mehr ankommt, außer eben dem "nachträglich eingeleiteten" stderr. Man kann das übrigens weitertreiben und einen dritten Filedescriptor einführen. So kannst du stderr und stdout von cdrecord in eine Datei umleiten, ungetestet: echo "ich bin das Skript" echo "Fehler im Skript" >2 cdrecord 3>~/.cdrecord-vom-script.log 1>&3 2>&3 Gruß, Frank -- Frank Küster Inst. f. Biochemie der Univ. Zürich Debian Developer

