Ogni programma Unix ha a sua disposizione tre flussi di dati standard:
Standard input (0)
Standard output (1)
Standard error (2)
Generalmente Standard output e Standard error vengono mostrati sullo schermo.
La bash può ridirigere questi flussi di dati, e si usano:
<, <<, >, >> per le ridirezioni, eventualmente uniti
al numero 0,1,2 che si riferisce a Standard input, Standard output, Standard error
rispettivamente.
Per esempio ls -la > pippo scrive il listato sul file pippo invece di
mostrarlo sul monitor; ls -la > pippo 2>pippo-err scrive inoltre
gli errori (tipo Permission denied e simili) su pippo-err invece di mostrarli
sullo schermo.
Il carattere | (pipe) permette di fare una cosa interessantissima, e cioè
di prendere lo Standard output di un comando ed usarlo come Standard input di un secondo comando.
Per esempio in ps aux |less la bash lancia per primo il comando ps aux,
prende lo Standard output del comando (cioè il lungo listato dei processi) e lo
usa come Standard input del comando less . Cioè tutto si comporta come
se avessimo mandato l'output di ps aux su un file provvisorio e poi avessimo
usato less per leggere una pagina alla volta tale file provvisorio,
cancellandolo quando usciamo dal less.
Altro esempio: ps aux |grep mozilla mostra solo le righe in cui compaia la parola mozilla.
Laboratorio di Comunicazione mediante Calcolatore - Sergio Steffè - AA 2019/2020 - PISA