next up previous contents
Next: esecuzione di comandi in Up: proprietà delle shell Previous: proteggere da sostituzione   Contents

reindirizzamento di input e output, pipeline

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



Esempio di redirezionamento dell'output:

 

ls                              stampa la lista della directory corrente
ls > a.000                              mette il risultato nel file a.000
 

Esempio di redirezionamento dell'input. Il comando bc è una calcolatrice che accetta input da tastiera, e dà il risultato nello standard output :

$ bc                             
6.1*2                              si digita un'operazione
12.2                              risposta del sistema
...                              ulteriore input
<ctrl-D>                              per uscire dal comando bc
$                             
Possiamo scrivere l'input per bc su un file, bc.dat; ed utilizzare questo come input del comando bc:

$ echo "6.1*2" > bc.dat                             
$ bc < bc.dat  
12.2                              risposta del sistema
$                             
Altro esempio di reindirizzamento dell'input: il comando wc (con l'opzione -w) conta le parole contenute in un file

wc -w < a.000                              conta le parole nel file a.000
I comandi ls e wc -w possono essere combinati in una pipeline, senza passare attraverso il file a.000:

ls | wc -w                              conta le parole nell'output di ls
Nota: una pipeline può essere costituita da più di due comandi in fila:

comando1 | comando2 | ...
e si può ridirigere l'input del primo comando e l'output dell'ultimo:

comando1 < file1 | comando2 | ... > file


next up previous contents
Next: esecuzione di comandi in Up: proprietà delle shell Previous: proteggere da sostituzione   Contents
Giorgio F. Signorini 2011-11-14