In UNIX, i dati prodotti da un comando sono detti standard output e quelli forniti al comando sono detti standard input. Questi flussi di dati in generale sono associati a due dispositivi, tastiera e video:
standard input | tastiera |
---|---|
standard output | video |
Si possono associare input e output a file con la seguente sintassi
comando file | esegui comando e dirigi output su file |
comando file | esegui comando prendendo input da file |
comando1 | comando2 | l'output di comando1 diventa input di comando2 |
comando file | aggiungi output di comando in coda a file |
ls stampa la lista della directory corrente ls > a.000 mette il risultato nel file a.000
Possiamo scrivere l'input per bc su un file, bc.dat; ed utilizzare questo come input del comando bc:
$ bc 6.1*2 si digita un'operazione 12.2 risposta del sistema ... ulteriore input <ctrl-D> per uscire dal comando bc $
Altro esempio di reindirizzamento dell'input: il comando wc (con l'opzione -w) conta le parole contenute in un file
$ echo "6.1*2" > bc.dat $ bc < bc.dat 12.2 risposta del sistema $
I comandi ls e wc -w possono essere combinati in una pipeline, senza passare attraverso il file a.000:
wc -w < a.000 conta le parole nel file a.000
Nota: una pipeline può essere costituita da più di due comandi in fila:
ls | wc -w conta le parole nell'output di ls
comando1 | comando2 | ...e si può ridirigere l'input del primo comando e l'output dell'ultimo:
comando1 < file1 | comando2 | ... > file