Redirezione

forma di comunicazione intraprocesso
(Reindirizzamento da Redirect)
Disambiguazione – "Redirect" rimanda qui. Se stai cercando altri significati, vedi Reindirizzamento di URL.

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.

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"

modifica

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

modifica

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

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica