capire una sequenza di reindirizzamenti


8

Se vengono utilizzati più reindirizzamenti insieme, la modifica del loro ordine fa differenza?

Come si deve capire il significato del loro ordine? Il canale incatenato dei reindirizzamenti è costruito come lettura dei reindirizzamenti da sinistra a destra o da destra a sinistra?

Per esempio

command 2>&1 > somefile

command > somefile 2>&1

Grazie e saluti!

Risposte:


7

Sì, l'ordine fa la differenza e devono essere letti da sinistra a destra.

command 2>&1 >somefilesignifica reindirizzare stderr (2) alla destinazione corrente di stdout (il terminale). Quindi cambia stdout per andare a somefile. Quindi stderr va al terminale e stdout va in un file.

command >somefile 2>&1significa reindirizzare stdout a somefile, quindi reindirizzare stderr alla stessa destinazione di stdout (il file). Quindi vanno sia stderr che stdout somefile.

Questo è spiegato nella sezione 3.6 del manuale di Bash: reindirizzamenti .


1
man bash 

dice:

REDIRECTION Prima di eseguire un comando, è possibile reindirizzare i suoi input e output usando una notazione speciale interpretata dalla shell. La regia può anche essere usata per aprire e chiudere i file per l'attuale ambiente di esecuzione della shell. I seguenti operatori di reindirizzamento possono precedere o apparire ovunque all'interno di un semplice comando o possono seguire un comando. I reindirizzamenti vengono elaborati nell'ordine in cui appaiono, da sinistra a destra.

e

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

ls > dirlist 2>&1

dirige sia l'output standard che l'errore standard all'elenco dei file, mentre il comando

ls 2>&1 > dirlist

dirige solo l'output standard al dirlist del file, poiché l'errore standard è stato duplicato dall'output standard prima che l'output standard fosse reindirizzato al dirlist.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.