2014-05-06 19 views
29

ho visto echo essere utilizzato come questo in molti luoghi:echo> & 2 "del testo" cosa significa in shell scripting

echo >&2 message text ... 

Cosa significa?

Capisco 2>&1, tuttavia, non sono sicuro di come interpretare l'utilizzo sopra.

Qualcuno può spiegare per favore?

+8

La posizione di precedenza del reindirizzamento nella riga di comando non è importante. Tutti '> & 2 echo message' e' echo> & 2 message' e 'echo message> & 2' sono equivalenti. – tripleee

+1

Non dimenticare di accettare una risposta se trovi la spiegazione che stavi cercando. – Jite

+0

Come estensione a ciò di cui @tripleee sta parlando, si noti che 'echo hey>/dev/null 2> & 1' e' echo hey 2> & 1>/dev/null' è ** non ** la stessa cosa. I reindirizzamenti si verificano * nell'ordine * da sinistra a destra. – Jite

risposta

58

Per spiegare rapidamente ciò che gli altri mancati:

echo "hey" >&2

> reindirizzare lo standard output (implicita 1>)

& cosa viene dopo è un descrittore di file, non un file (solo per il lato destro della >)

2 di file stderr numero descrittore

Redirect stdout da echo comando per stderr. (Se si dovesse usare echo "hey" >2 si dovrebbe produrre hey in un file chiamato 2)

15

L'uso di >&2 qui sta inviando l'output all'errore standard invece dello standard. Questo è generalmente il posto migliore per inviare l'output di registrazione che non è il risultato effettivo del calcolo, specialmente se il risultato è stampato su standard (eventualmente reindirizzato su un file) piuttosto che su un altro output di file (ad es. l'errore standard assicura che non venga incluso con l'output reale che è stato reindirizzato al file di output).

4

Il reindirizzamento >&2 è una scorciatoia per 1>& 2.

Si capisce 2>& 1 così si capirà che questo collega stdout del comando alla corrente stderr