A fejezet első részében megtanultuk egy program standard be- és kimenetét átirányítani. Ha egy program kimenetét egy másik program bemeneteként akarjuk felhasználni, akkor átirányíthatjuk egy fájlba, majd onnan a másik programba.
Mivel egy program kimenetének egy másik program bemeneteként való felhasználására gyakran van szükség, ezért létezik egy közvetlen megoldás, a pipe[1]. A pipe használata egyszerű, a két program közé egy | jelet kell tenni:
$ ls | wc
20 20 118
$Látható, hogy a pipe használata kényelmesebb és egyszerűbb, mint a fájlba kiírás, ráadásul nem igényel lemezterületet. A pipe halmozható, azaz egy program kimenetét fogadhatja egy másik program, ami egy harmadik programnak adja át a kimenetét, és így tovább. A pipe és az átirányítások kombinálhatóak, csak arra kell ügyelni, hogy amit átirányítottunk, azt ne próbáljuk meg még egyszer felhasználni pipe-ban, mert egy dolgot nem lehet kétfelé irányítani[2].
Az alábbi példa azt számolja meg, hogy hány sorban fordul elő Pilinszky János összegyűjtött verseiben a ``messze'' szó. Először a cat paranccsal kiíratjuk, majd ezt a grep-be irányítjuk. A grep minden egyes sort kiír, amiben szerepel a ``messze'' szó, a sorokat a wc paranccsal számoljuk meg.
$ cat pilinszky_osszes.txt | grep messze | wc
25 126 819
$Ahogy egyre több parancsot ismersz majd meg, ráérzel a pipe és az átirányítás használatának a lényegére. Sok ember szeret nagy, komplikált programokat használni, például egy szövegszerkesztőben lehet olyan funkció, ami a fenti feladatot egyszerűen elvégzi. Mégsem valószínű, hogy minden feladatra találsz speciális programot. A UNIX olyan, mint egy szerszámosláda, sok apró, de gyors és hasznos eszközzel. A fent használt programok mindegyike egyszerű feladatokat végez, de összekapcsolva őket képesek bonyolultabb problémákat is megoldani.
| [1] | a szó jelentése angolul ``cső'', a magyar szakirodalom is használja ezt az elnevezést. |
| [2] | illetve lehet, a tee használatával - a man tartalmazza a részleteket. |