Redirezione
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Nota_disambigua.svg/18px-Nota_disambigua.svg.png)
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
La redirezione, in informatica, è la deviazione dei canali standard (standard input, standard output e standard error) di un dato comando verso destinazioni (o da sorgenti, nel caso dello standard input) che sono diverse da quelle predefinite.
Esempi
La redirezione è tipica di molte shell testuali, ed in esse si può effettuare inserendo appositi caratteri di redirezione tra i comandi. La sintassi tipica è la seguente:
comando > nome_file
Nell'esempio precedente viene eseguito comando ed il suo standard output viene scritto nel file nome_file. In modo simile si può fornire ad un comando dei dati sullo standard input:
comando < nome_file
In questo caso comando viene eseguito elaborando i dati presenti nel file nome_file.
Da notare che lo standard output di un comando può essere fornito direttamente come standard input di un comando successivo interponendo tra essi una barra verticale ("|
"), ad esempio:
comando1 | comando2
Qui viene eseguito comando1 ed il suo output diventa l'input per comando2 (il cui output può essere a sua volta ridirezionato). In questo caso si parla di pipeline software.
Funzione "appendi"
In bash, come in altre shell testuali, è possibile usare dei caratteri di redirezione che aggiungono lo standard output del comando al termine di un file invece di sovrascriverne il contenuto. Ad esempio:
comando >> nome_file
aggiunge (append in inglese) l'output di comando al contenuto del file nome_file. Se esso non esiste, sarà creato.
Questa funzione viene tipicamente usata negli script di shell per realizzare dei file di log che tengono traccia delle attività svolte.
Funzione "here document" ("documento sul posto")
Nelle shell testuali dei sistemi Unix e Unix-like è normalmente disponibile anche un tipo di redirezione che permette di specificare direttamente del testo su più righe come standard input ad un comando. Ad esempio:
comando << marcatore linea1 linea2 .. marcatore
marcatore è una singola parola arbitraria (tipicamente EOF
, da "end of file"). Tutte le linee di testo comprese tra le due occorrenze di marcatore (l'ultima occorrenza deve apparire da sola su una linea) saranno fornite sullo standard input a comando.
Normalmente il testo è soggetto alla sostituzione di variabili e di comandi tipiche delle shell testuali, tranne quando marcatore è specificato tra virgolette doppie o apici singoli. Ad esempio:
numero=42 cat << EOF Il numero è $numero La data di oggi è `date` EOF
fornisce a cat il testo compreso tra le due occorrenze di EOF
, sostituendo la variabile $numero
con il suo valore, e sostituendo l'espressione `date`
con l'output del comando date.
Voci correlate
- Input/output
- Pipe (informatica)
- Pipeline software
- Permalink
- Puntatore
Collegamenti esterni
- (EN) Denis Howe, input/output redirection, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)