Output di un comando verso un file
Il risultato di un comando viene inviato verso un file: se il file già esiste viene sovrascritto, il suo contenuto originale è perso per sempre
ls *.txt > lista_file_testo.txt
Posso accodare al file: al file originale vengono aggiunte nuove righe
ls *.txt >> lista_file_testo.txt
Messaggi di errore di un comando su un file
I messaggi di errore sono diretti su un canale diverso dallo standard, per cui:
echo "Elenco dei file di testo" > elenco.log ls *.txt 2>> elenco.log cat elenco.log Elenco dei file di testo ls: impossibile accedere a *.txt: No such file or directory
Tutto l’output sul file di log
Per redirigere sia il canale di standard output che di error verso uno stesso file di log:
echo "Elenco dei file di testo" > elenco.log ls *.txt >> elenco.log 2>&1
Output di un comando verso un nuovo processo
Per esempio filtro dall’output del comando ls solo ciò che contiene la stringa “lista”
ls *.txt | grep lista
Può essere utile per implementare un ciclo su ciascun file
ls *.txt | while read FILE do echo "$FILE è un file di testo" done
Chiudere il canale di output
In uno script, l’esecuzione della seguente riga produce la ridirezione dell’output standard di tutti i successivi comandi, allo stesso modo si può redirigere lo standard error:
exec 1>/dev/null
Lo standard output e error possono essere chiusi con
exec 1>&- exec 2>&-