REDIREZIONAMENTI E PIPE

Precedente
Programma
Seguente
Bastard Operator From Hell!
ls -la > ls-la.txt
  il file ls-l.txt verrà creato e conterrà l'output del comado ls -l
ls -l | grep .gz
  l'output del comando ls -l verrà inviato a grep che a sua volta stamperà le righe corrispondenti
ps -ef | grep $USER
  visualizza tutti i processi proprietari dell'utente loggato.
./programma > outerr.txt 2>&1
  redirige sia lo stdout che lo stderr di un processo sullo stesso file
File descriptors e operatori
La shell gestisce la comunicazione con ogni programma lanciato tramite 3 file descrittori:
- standard input (stdin - file descriptor 0), è il canale attraverso il quale il programma riceve i dati di ingresso, generalmente la tastiera.
- standard output (stdout - file descriptor 1), è il canale di uscita del risultato dell'elaborazione del programma, di solito il video.
- standard error (stderr - file descriptor 2), è dove il programma stampa eventuali errori durante l'esecuzione, di solito il video.
Molti comandi UNIX assumono che l'ingresso dei dati avvenga (o possa avvenire) da standard input e l'uscita avvenga su standard output. E' possibile concatenare più programmi fra loro e fare in modo che lo standard output di uno diventi lo standard input di un altro. Per farlo si utilizza il carattere | chiamato pipe.
E' inoltre possibile redirezionare stdin, stout e sterr su un file tramite gli operatori di redirezionamento:
> redirige lo standard output di un comando su un file o dispositivo
>> redirige l'output di un comando su un file o dispositivo ma se il file esiste già i dati vengono aggiunti alla fine del file. Se il file non esiste viene creato
< redirige lo standard input da un file o dispositivo
2> redirige lo standard error di un comando su un file o dispositivo
| operatore pipe, concatena standard output e standard input di due programmi