|
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 |
|