Redirezione dell'output e dell'input
Una caratteristica importante di UNIX è la capacità di redirigere l'output. Questo vi permette, invece di vedere
i risultati di un comando, di registrarli in un file o di mandarli direttamente alla stampante. Per esempio, per redirigere l'output
del comando ls /usr/bin , metteremo un segno > alla fine della linea e diremo in quale file vogliamo che sia messo
l'output:
/home/larry$ ls
/home/larry$ ls -F /usr/bin > lista
/home/larry$ ls
lista
/home/larry$
Come potete vedere, invece di scrivere i nomi di tutti i file, il comando crea un nuovo file nella home directory; proviamo a vederlo
con il comando cat . Se tornate indietro, ricorderete che cat era un comando apparentemente inutile che copiava
quello che scrivevate (lo standard input) sul terminale (standard output). cat può anche stampare un file sullo
standard output se gli date il file come parametro:
/home/larry$ cat lista
...
/home/larry$
L'output esatto del comando ls /usr/bin appare nel contenuto di lista. Tutto bene, anche se questo non ha risolto il problema
originale (vedi paragrafo precedente).
Comunque, cat fa qualcosa di interessante quando il suo output viene rediretto. Cosa fa il comando cat lista >
nuovofile ? Normalmente, > nuovofile dice "prendere tutto l'output del comando e metterlo in nuovofile".
L'output del comando cat lista è il file lista. In questo modo abbiamo inventato un metodo nuovo (e non molto efficiente)
per copiare i file.
E che dire del comando cat > pippo ? cat da solo legge ogni linea inserita dal terminale (standard input)
e stampa tutto nello standard output finché non legge + .
In questo caso, lo standard output è stato rediretto nel file pippo . Adesso cat è servito come
un rudimentale editor (programma per scrittura testi):
/home/larry$ cat > pippo
Oggi è una bella giornata.
premete Ctrl+d
Abbiamo creato quindi il file pippo che contiene la frase "Oggi è una bella giornata". Un altro uso del
versatile comando cat è concatenare più file insieme: cat stampa tutti i file che gli
vengono passati come parametro, un file dopo l'altro. Così il comando cat lista pippo stampa il listato della directory
/usr/bin , e poi la nostra frase. In questo modo, il comando cat lista pippo > listaepippo creerà
un nuovo file contenente sia lista sia pippo .
Come per lo standard output, è anche possibile redirigere lo standard input. Un programma, invece di leggere dalla tastiera,
legge da un file. Siccome la redirezione dell'input è collegata alla redirezione dell'output, sembra naturale che il carattere
speciale per la redirezione dell'input sia <. Anche questo deve essere usato dopo il comando da eseguire.
La redirezione dell'input è utile generalmente se avete un file di dati e un comando si aspetta dell'input dallo standard input.
La maggior parte dei comandi permettono di specificare un file su cui operare, così < non è usato nelle normali operazioni
giornaliere come altre tecniche.
|