Hledat:

Invia.cz Eurovíkendy Kanárské ostrovy Dominikánská republika Madeira Last minute Vydělávejte peníze s INVIA.CZ
 

Roura (Unix)

Tři programy spojené rourou spuštěné v textovém terminálu

Roura, trubka, kolona, anonymní roura, konvenční roura (anglicky pipeline) je v unixových systémech původním nástrojem pro spojování procesů do řetězce pomocí vzájemného propojení standardních proudů tak, že je vždy výstup (stdout) procesu nasměrován přímo do vstupu (stdin) následujícího procesu. Jde o jednosměrnou meziprocesovou komunikaci (IPC), pro jejíž vytvoření se používá fronta FIFO, která se vytváří u příbuzných procesů a automaticky zaniká po jejich ukončení. Rourami jsou často spojovány programy, které nazýváme filtry.

Koncept použití rour vynalezl Douglas McIlroy pro unixový shell a byl pojmenován podle analogické funkce se skutečnými rourami (trubkami). Univerzálnější je pojmenovaná roura, pomocí které lze propojit i nepříbuzné procesy.

Obsah

[editovat] Příklad

[editovat] Jednoduchý příklad

V příkladu uvedeném níže příkaz ls vypisuje obsah adresáře a less je interaktivní program, který umožňuje prohlížet obsah svého vstupu po jednotlivých stránkách, vracet se a vyhledávat. Kolona příkazů v příkladu tedy umožní prohlížet celý výpis postupně, i když se nevejde na jednu obrazovku terminálu.

ls -l | less

Vytváření kolon (rour) s využitím příkazů less (nebo jeho jednodušší a starší variantou more) je velmi často používána pro prohlížení potenciálně velkých textových výstupů programů, které by jinak odrolovaly nahoru mimo obrazovku terminálu a byly ztraceny. Stejně tak jsou tyto dva programy využívány uvnitř programů, které prezentují větší objemy textu (například příkaz man).

[editovat] Složitější příklad

V následujícím příkladu je implementována kolona příkazů, která zkontroluje překlepy na webové stránce zadané pomocí URL odkazu. Vysvětlení následuje za příkladem (na některých systémech je databáze slov v souboru /usr/share/dict/words).

curl "http://en.wikipedia.org/wiki/Pipeline_(Unix)" | \
sed 's/[^a-zA-Z ]/ /g' | \
tr 'A-Z ' 'a-z\n' | \
grep '[a-z]' | \
sort -u | \
comm -23 - /usr/dict/words

Poznámka: znak zpětného lomítka („\“) umožňuje rozdělit jeden dlouhý řádek na více řádků, i když interpret příkazů je takto chápe jako jeden řádek (jeden složený příkaz, tj. jednu kolonu příkazů) a bude zpracován najednou.

Popis jednotlivých kroků zpracování datového proudu v koloně příkazů:

  1. curl stáhne stránku v podobě HTML (lze použít i příkaz wget
  2. sed odstraní všechny znaky, které nejsou písmena nebo znak mezery a nahradí je mezerou
  3. tr změní všechna velká písmena na malá a změní všechny mezery v textu na znak konce řádku (takže každé „slovo“ bude na zvláštním řádku)
  4. grep vypíše pouze řádky, které obsahují alespoň jedno písmeno (odstraní prázdné řádky)
  5. sort všechna „slova“ abecedně setřídí a přepínač -u odstraní všechny duplicitní výskyty (každé „slovo“ bude na výstupu jen jednou)
  6. comm nalezne společné řádky v obou souborech, přepínač -23 potlačí výstup řádků, které se vyskytují pouze v druhém vstupním souboru a ty, které se vyskytují v obou souborech, takže na výstupu budou jen ty „slova“, které jsou pouze v prvním souboru. Protože je jako parametr použit znak -, je prvním souborem standardní vstup (výstup předchozího příkazu) a druhým souborem je soubor se slovy /usr/dict/words. Proto budou na výstupu slova, která se nacházení na webové stránce, ale nejsou obsažena v souboru /usr/dict/words.

Speciální znak svislá čára („|“) na příkazovém řádku znamená, že shell má propojit standardní výstup příkazu na jeho levé straně se standardním vstupem příkazu na jeho pravé straně (dojde k vytvoření roury).

[editovat] Historie

Koncept použití rour a použití znaku svislá čára („|“) vynalezl Douglas McIlroy, jeden z autorů prvních unixových shellů, když si všiml, jak mnoho času tráví zpracováním výstupu jednoho programu jako vstupu do jiného programu. V roce 1973 jeho ideu implementoval Ken Thompson, když přidal roury do operačního systému Unix a shellu Thompson shell[1].

Ikona robota Automator v počítačích Apple, které také využívají konceptu rour, drží rouru.

[editovat] Ostatní operační systémy

Podrobnější informace naleznete v článku Roura (software).

Idea roury byla převzata ostatními operačními systémy, často včetně stejného zápisu, jako například DOS, OS/2, Microsoft Windows, Mac OS X, BeOS a další. Stala se konceptem softwarového designu „roury a filtry“.

[editovat] Související články

[editovat] Reference

  1. http://www.linfo.org/pipe.html Pipes: A Brief Introduction by The Linux Information Project (LINFO)

Tento článek je zčásti nebo zcela založen na překladu článku Pipeline (Unix) na anglické Wikipedii.

 
Roura (Unix) v jiných jazycích: English, Français, Italiano, 한국어, Polski, Português, Slovenčina, Українська
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Roura_(Unix)
Stránka byla naposledy upravena v Stránka byla naposledy editována 10. 9. 2008 v 18:42.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt | Set-top-boxy