Domanda Cosa significa 2> / dev / null?


Vorrei una breve spiegazione della seguente riga di comando:

grep -i 'abc' content 2>/dev/null 

149
2017-09-26 08:21


origine




risposte:


L'operatore> reindirizza di solito l'output su un file ma può essere indirizzato a un dispositivo. Puoi anche usare >> per aggiungere.

Se non si specifica un numero, viene assunto il flusso di output standard, ma è anche possibile reindirizzare gli errori

> file reindirizza lo stdout al file
1> file reindirizza lo stdout al file
2> file reindirizza lo stderr nel file
&> file reindirizza lo stdout e lo stderr nel file

/dev/null è il dispositivo nullo che prende qualsiasi input desiderato e lo getta via. Può essere usato per sopprimere qualsiasi output.


217
2017-09-26 08:38



c'è una differenza tra > /dev/null 2>&1 e &> /dev/null - Alexander Mills
In pratica oggi non penso ci sia 2>&1 è una sintassi più vecchia così &> non avrebbe funzionato anni fa, ma entrambi sono equivalenti. - Warren Hill


In breve, reindirizza lo stderr (fd 2) nel buco nero (scarta l'output del comando).

Alcuni casi d'uso più comuni per il reindirizzamento:

command > /dev/null 2>&1 &

Correre command sullo sfondo, eliminare lo stdout e lo stderr

command >> /path/to/log 2>&1 &

Correre command e aggiungere stdout e stderr a un file di registro.


16
2017-09-26 08:32



C'è una buona ragione per usare > /dev/null 2>&1 invece di &> /dev/null? - Craig McQueen
@CraigMcQueen &> è nuovo in Bash 4, il primo è solo il modo tradizionale, io sono così abituato (facile da ricordare). - Terry Wang


/dev/null viene trattato come un buco nero in Linux / Unix, quindi puoi inserire qualsiasi cosa in questo, ma non sarai in grado di recuperarlo /dev/null.

Ulteriore, 2> significa che stai reindirizzando (ad es. >) lo stderr (es. 2) nel buco nero (es. /dev/null)

Il tuo comando è:

grep -i 'abc' content 2>/dev/null 

Non cercare di finire con un altro taglio in avanti come questo - 2>/dev/null/ (non è una directory).


5
2018-06-11 10:57