CASPUR Consorzio interuniversitario per le Applicazioni di Supercalcolo Per Università e Ricerca
Avvia ricerca
home-->Standard Input, Output ed Error
 

Introduzione al sistema operativo Unix
La shell
I processi
Accesso al sistema
Standard Input, Output ed Error
Comandi fondamentali
Filtri
Editare file
Script di shell
Indice alfabetico dei comandi descritti
   

STANDARD INPUT, OUTPUT ED ERROR

In Unix esistono tre file fondamentali:
  1. standard input (stdin) è il file da cui normalmente un programma acquisisce i suoi input;
  2. standard output (stdout) è il file su cui normalmente un programma produce i suoi output;
  3. 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

indietro
 
 
CASPUR - Via dei Tizii, 6/b - 00185 Roma - Tel. 06 444861 - Fax 06 4957083 - webmaster@caspur.it