PredchádzajúciHoreDomovNasledujúci

Reťazenie vstupov a výstupov

Jednotlivé filtre sú často užitočné aj samé osebe, ich skutočná sila ale spočíva v tom, že interpreter príkazového riadku umožňuje paralelné spúšťanie viacerých procesov a postupné zreťazenie ich štandardných vstupov a výstupov. Takýmto spôsobom je možné podľa potreby kombinovať relatívne jednoduché filtre, ktoré "robia jednu vec dobre", do komplexných algoritmov:

Napríklad:

prikaz_1 [p_1...] | prikaz_2 [p_2...] | prikaz_3 [p_3...] | ... | prikaz_n [p_n...]

Spustí súčasne príkazy prikaz_1prikaz_n (s prípadnými parametrami) v paralelne bežiacich procesoch a presmeruje štandardný výstup procesu, v ktorom sa vykonáva prikaz_1 do štandardného vstupu procesu, v ktorom sa vykonáva prikaz_2 jeho štandardný výstup na vstup procesu, kde sa vykonáva prikaz_3, atď. až po posledný proces. Takéto zreťazenie procesov sa nazýva pipeline.

Pipeline je vlastne ad-hoc filter, majúci svoj štandardný vstup a výstup, a transformácia, ktorú vykonáva je kombináciou operácií, implementovaných jednotlivými filtrami.

Cvičenie

Nasledovný príkaz je príkladom pipelinu troch procesov, ls -l / vypíše zoznam položiek v koreňovom adresári na samostatné riadky, grep -e '^d' z nich vyberie tie riadky, ktoré začínajú znakom d - t.j. adresáre a cat -n ich očísluje.

$> ls -l / | grep -e '^d' | cat -n

Štandardný vstup a výstup pipelinu je možné presmerovať z a do súboru nasledovne:

prikaz_1 [p_1...] < vstup | prikaz_2 [p_2...] | ... | prikaz_n [p_n...] > vystup

PredchádzajúciHoreDomovNasledujúci