A pipe

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.

Megjegyzések

[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.