STANDARD INPUT, OUTPUT ED ERROR
|
 |
In Unix esistono tre file fondamentali:
- standard input (stdin) è il file da cui normalmente un programma acquisisce i suoi input;
- standard output (stdout) è il file su cui normalmente un programma produce i suoi output;
- standard error (stderr) è il file su cui normalmente un programma invia i messaggi di errore.
Tutti i programmi Unix aprono sempre questi tre file.
L'input può provenire dalla tastiera, da un file o da un comando.
L'output può essere destinato allo schermo, ad un file o ad un altro
comando. Non è necessario, infatti, che il comando sappia da dove
proviene l'input o dove è diretto l'output. E' la shell che imposta
questi collegamenti in relazione alle istruzioni contenute nella linea
di comando. Una delle funzioni principali della shell è proprio la
gestione dello standard input e standard output in modo da poter
specificare da dove un comando ottiene il proprio input e dove invia il
proprio output. Questo avviene tramite i meccanismi di reindirizzamento di input e output, (I/O), che comprendono il reindirizzamento di file e le pipe. Facciamo alcuni esempi per capire meglio:
<elisa@borneo> command > output
In questo modo l'output del comando "command" viene reindirizzato al
file output e, se quest'ultimo non esiste, viene creato altrimenti
viene sovrascritto.
<elisa@borneo> command >> output
Anche l'operatore ">>" reindirizza l'output del comando "command"
al file output ma, a differenza di ">", il file (se già esiste) non
viene sovrascritto e viene appeso il risultato di "command" a quanto è
già contenuto nel file output.
<elisa@borneo> command_1 | command_2
In questo esempio, l'operatore "|" (pipe) permette di inviare l'output
di command_1 all'input di command_2. Supponiamo, ad esempio, di voler
leggere un file di nome "pippo" il cui testo è molto lungo. Per prima
cosa visualizziamo il file (ad esempio con il comando "cat") e poi
reindirizziamo l'output ad un comando (ad esempio "more") che permette
di scorrere il testo pagina per pagina rendendo più pratica la lettura
del file; a livello pratico basta digitare " cat pippo | more ". E'
possibile, dunque, usare delle combinazioni di comandi uniti da pipe
(|).
Proprio come è possibile reindirizzare lo standard output, è possibile
reindirizzare anche lo standard input usando, questa volta, l'operatore
"<". Tale operatore chiede alla shell di interpretare il file che lo
segue come standard input del comando. Ad esempio:
<elisa@borneo> command < file_dati
In questo modo la shell collega, con l'operatore "<", file_dati allo standard input del comando "command".
E' possibile reindirizzare lo standard input e output contemporaneamente. Infatti digitando il comando:
<elisa@borneo> command < input > output
In questo modo il comando "command" legge il suo input dal file input e reindirizza il risultato al file output.
Lo standard error è usato per visualizzare i messaggi di errore; per
default, esso appare sullo schermo ma può essere anche reindirizzato.
Con l'operatore ">" è possibile redirigere lo standard output ed
error sullo stesso file. Se invece si vogliono separare è possibile
usare il seguente comando:
<elisa@borneo> ( commmand > output ) >& error
|
 |
|