<Precedenti | Contenuti | Succ.>
Reindirizzamento dell'output standard e dell'errore standard su un file
Ci sono casi in cui potremmo voler catturare tutto l'output di un comando in un singolo file. Per fare ciò, dobbiamo reindirizzare contemporaneamente sia l'output standard che l'errore standard. Ci sono due modi per farlo. Innanzitutto, il modo tradizionale, che funziona con le vecchie versioni della shell:
[io@linuxbox~]$ ls -l /bin/usr > ls-output.txt 2>&1
[io@linuxbox~]$ ls -l /bin/usr > ls-output.txt 2>&1
Usando questo metodo, eseguiamo due reindirizzamenti. Per prima cosa reindirizziamo l'output standard al file ls-output.txt e quindi reindirizziamo il descrittore di file 2 (errore standard) al descrittore di file uno (output standard) utilizzando la notazione 2> e 1.
Si noti che l'ordine dei reindirizzamenti è significativo. Il reindirizzamento dell'errore standard deve sempre verificarsi dopo reindirizzare l'output standard o non funziona. Nell'esempio sopra,
>ls-output.txt 2>&1
reindirizza l'errore standard al file ls-output.txt, ma se l'ordine viene modificato in
2>&1 >ls-output.txt
l'errore standard viene indirizzato allo schermo.
Versioni recenti di bash fornire un secondo metodo più snello per eseguire questa operazione
Errore standard di reindirizzamento
reindirizzamento combinato:
[io@linuxbox~]$ ls -l /bin/usr &> ls-output.txt
[io@linuxbox~]$ ls -l /bin/usr &> ls-output.txt
In questo esempio, usiamo la notazione singola &> per reindirizzare sia l'output standard che l'errore standard nel file ls-output.txt. Puoi anche aggiungere l'output standard e i flussi di errore standard a un singolo file in questo modo:
[io@linuxbox~]$ ls -l /bin/usr &>> ls-output.txt
[io@linuxbox~]$ ls -l /bin/usr &>> ls-output.txt