Pipeline (software)
La pipeline (in inglese, tubo, condotto) è un metodo per trasmettere un flusso di dati da un programma all'altro o fra due processi.
A livello utente si incontra nell'uso della shell, dove è spesso conveniente riutilizzare i dati uscenti di un programma come input di un altro, ad esempio per applicare dei filtri o per visualizzare e manipolare i risultati in un programma interattivo.
In molti sistemi, come i discendenti del Microsoft DOS e di Unix, l'operazione via shell è gestita anteponendo fra i programmi una barra verticale ("|").
Pipeline in ambienti Unix
Esempi
Nei seguenti esempi di riga di comando lo standard output del un programma a sinistra dell'operatore per la pipe è passato allo standard input del programma alla sua destra.
cut -d : -f 1 /etc/passwd | grep foo
trova tutti gli utenti in /etc/passwd che hanno la stringa "foo" all'interno del loro nome. Il comando cut prende il primo campo di ciascuna linea dal file /etc/passwd e la pipe passa l'output a grep, che cerca le linee contenenti "foo" e le stampa su standard output.
Un altro esempio di pipeline, che visualizza sulla console i numeri da 1 a 13:
while : ; do echo ; done | head -n 13 | nl -ba
Spesso i filtri costituiscono gli elementi successivi al primo in una pipeline.
Inizio della pipeline
Programmi che vengono spesso utilizzati per creare il flusso di dati da inviare ad una pipeline:
- find (individua i file con certe caratteristiche)
- cat (legge un file o un dispositivo)
- tail -f (legge le righe che vengono aggiunte ad un file)
Fine della pipeline
Una pipeline termina stampando il risultato sul terminale, redirigendolo su un file, con un pager come more o less, che permettono di leggere un file o un flusso di dati una pagina alla volta, o anche con xargs, che trasforma un flusso di dati in argomenti sulla riga di comando