GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il reindirizzamento di Stderr a /dev/null viene eseguito in questo modo?

Questo non ha senso per me.

wibble > /dev/null 2>&1

Penso che avrebbe più senso se fosse qualcosa del genere:

wibble 2>&1 > /dev/null

In altre parole

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

Qual è il pensiero dietro l'ordine del reindirizzamento del comando xxx > /dev/null 2>1 ?

Risposta accettata:

I reindirizzamenti vengono elaborati da sinistra a destra. Se lo fai

2>&1 1> /dev/null

Il primo reindirizzamento rende stderr punta allo stream che stdout indica in quel momento (che è essenzialmente il tuo tty). Non fa stderr un alias di stdout .

Quindi stdout viene reindirizzato al bit bucket. Il stdout il reindirizzamento non ha effetto sul precedente stderr reindirizzare. stderr si riferisce ancora alla tua tty.

Quindi:

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

stamperà solo il messaggio di errore sul tuo terminale.

Il bash la pagina della documentazione di reindirizzamento lo menziona esplicitamente:

Si noti che l'ordine dei reindirizzamenti è significativo. Ad esempio, il comando

          ls > dirlist 2>&1

indirizza sia lo standard output che lo standard error al file dirlist, mentre il comando

          ls 2>&1 > dirlist

indirizza solo lo standard output a file dirlist, perché l'errore standard è stato duplicato dallo standard output prima che lo standard output fosse reindirizzato a dirlist .


Linux
  1. Quando usare /dev/random vs /dev/urandom?

  2. Come silenziare completamente un Cronjob in /dev/null/?

  3. Cosa sono i file /dev/zero e /dev/null in Linux

  4. Come codificare in base64 /dev/random o /dev/urandom?

  5. Reindirizza stderr a /dev/null

/dev/null in Linux

screen Impossibile aprire il tuo terminale '/dev/pts/0' - controlla

DD da /dev/zero a /dev/null... cosa succede realmente

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp