Pipe UNIX Tutorial

May 28

Pipe UNIX Tutorial


Il tubo di comando UNIX funziona come un tubo fisico. Si collega due comandi UNIX e quindi facilita un flusso unidirezionale di dati. Come un tubo fisica, che controlla il flusso di fluido, il comando pipe dà il controllo utenti dell'uscita dei comandi in esecuzione.

Nozioni di base

Pipe UNIX Tutorial


Proprio come una joint fisica di due condotte che dà l'illusione di un tubo continuo, il comando pipe (|) permette a due comandi UNIX lavorano insieme. Per esempio:

$ cat abc.txt | wc --l
23

Il comando UNIX "cat" è usato per recuperare il contenuto di un file, mentre il comando "wc -l" fa un conteggio delle parole del flusso di input di parole. Il comando pipe "|" in questo esempio passa l'output del "gatto" del file di abc.txt (che elenca le contenuto del file abc.txt) per "wc - l", che esegue un numero di parole sui contenuti. Nell'esempio, il risultato è 23, che significa che il file abc.txt contiene 23 parole. Se questi comandi sono stati eseguiti separatamente, sarebbe difficile contare il numero di parole nel file abc.txt. Tubo consente all'utente di raggiungere questo combinando i due comandi.

In un giunto condotta fisica, l'uscita di un tubo non può essere lo stesso come ingresso per l'altro tubo, come illustrato nel diagramma. Analogamente in UNIX, è possibile che la quantità output di un comando potrebbe non corrispondere alla quantità ingresso dell'altro. Il comando pipe ti dà la possibilità di controllare il flusso. Se un comando agisce più velocemente rispetto agli altri, si adegua il flusso. Per esempio:

$ ls | more

I "ls" comando elenca il contenuto di una directory. Tuttavia, questo può comportare uscita eccesso sul terminale se la directory è costituito da un sacco di file. Pertanto, al fine di controllare l'uscita e rendere più senso di esso, il comando pipe (|) viene utilizzato per passare questa uscita ad un altro comando, "più" (che limita la potenza di una pagina). Ciò comporta l'uscita essendo fornita su una pagina. Solo quando l'utente preme "Enter" è la pagina successiva di output mostrato.

Flessibilità

Il comando tubo ha la capacità di unire più di due comandi UNIX, fornendo maggiore flessibilità per l'utente. Tuttavia, per utilizzare questo, gli utenti dovrebbero sapere che cosa vogliono in generale e cosa singoli comandi fare. Per esempio:

$ls | grep ^d | grep notes | wc --l

Il comando precedente si propone di trovare tutte le sottodirectory all'interno di una directory che contengono la parola "note" in loro e poi fa un conteggio delle parole. Questo viene fatto dalla combinazione dei quattro comandi mostrati sopra. Il primo comando, "ls", elenca il contenuto della directory corrente. Il secondo comando "grep ^ D," trova le sottodirectory da quella lista. Il terzo comando, "note grep," trova i sub-directory che contengono la parola "note". Il quarto comando, "wc -L," conta una parola dall'uscita.

Il punto principale da ricordare mentre si utilizza il comando pipe è che l'output del comando a sinistra è lo standard di uscita e l'ingresso per il comando a destra è dall'input standard. Quindi, se ci sono i comandi UNIX che inviano uscite non alle uscite standard (terminali, per esempio) in cui viene eseguito il comando, il comando del tubo non deve essere usato.

Programmazione

Tubazioni possono essere creati in C / C ++ programmi, anche con il metodo del tubo (). Questa chiamata crea un oggetto tubo, che crea due nuovi descrittori di file, FD1 e FD2. Una lettura da fd1 accede ai dati scritti fd2 su una FIFO (First In First Out) basi, e una lettura da fd2 accede ai dati scritti fd2 su base FIFO.