GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum wird Stderr auf diese Weise nach /dev/null umgeleitet?

Das ergibt für mich keinen Sinn.

wibble > /dev/null 2>&1

Ich denke, es wäre sinnvoller, wenn es so wäre:

wibble 2>&1 > /dev/null

Mit anderen Worten

Commands Output Sendall STDERRORS to STDOUT then SEND it all to /dev/null

Was ist der Gedanke hinter der Reihenfolge der Befehlsumleitung xxx > /dev/null 2>1 ?

Akzeptierte Antwort:

Die Weiterleitungen werden von links nach rechts abgearbeitet. Wenn ja

2>&1 1> /dev/null

Die erste Weiterleitung macht stderr zeigen Sie auf den Stream, der stdout ist zeigt auf zu dieser Zeit (was im Wesentlichen Ihr tty ist). Es macht nicht stderr ein Alias ​​von stdout .

Dann stdout wird zum Bit-Bucket umgeleitet. Die stdout Umleitung wirkt sich nicht auf den vorherigen stderr aus umleiten. stderr bezieht sich immer noch auf dein tty.

Also:

ls file_that_doesnt_exist 2>&1 1> /dev/null

wird nur die Fehlermeldung auf Ihrem Terminal ausgeben.

Die bash Umleitungsdokumentation erwähnt dies explizit:

Beachten Sie, dass die Reihenfolge der Umleitungen wichtig ist. Zum Beispiel der Befehl

          ls > dirlist 2>&1

leitet sowohl die Standardausgabe als auch die Standardfehler in die Datei dirlist, während der Befehl

          ls 2>&1 > dirlist

leitet nur die Standardausgabe zur Datei dirlist um, weil der Standardfehler von der Standardausgabe dupliziert wurde, bevor die Standardausgabe zu dirlist umgeleitet wurde .


Linux
  1. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  2. Wann sollte /dev/random vs. /dev/urandom verwendet werden?

  3. Shell:leite stdout nach /dev/null und stderr nach stdout um

  4. screen Ihr Terminal '/dev/pts/0' kann nicht geöffnet werden - bitte überprüfen

  5. Leite stderr nach /dev/null um

/dev/null unter Linux

Was sind /dev/zero- und /dev/null-Dateien in Linux

Wie kann /dev/random oder /dev/urandom mit base64 codiert werden?

DD von /dev/zero nach /dev/null ... was eigentlich passiert

Kernel:/dev/kmem und /dev/mem deaktivieren

Warum sind < oder > erforderlich, um /dev/tcp