V Linuxu pipe
příkaz umožňuje odeslat výstup jednoho příkazu druhému. Piping, jak tento termín napovídá, může přesměrovat standardní výstup, vstup nebo chybu jednoho procesu na jiný pro další zpracování.
Syntaxe pro pipe
nebo unnamed pipe
příkaz je |
znak mezi libovolnými dvěma příkazy:
Command-1 | Command-2 | …| Command-N
Zde nelze k potrubí přistupovat prostřednictvím jiné relace; je vytvořen dočasně, aby vyhovoval provádění Command-1
a přesměrovat standardní výstup. Po úspěšném provedení se smaže.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Ve výše uvedeném příkladu contents.txt
obsahuje seznam všech souborů v určitém adresáři – konkrétně výstup ls -al
příkaz. Nejprve grep
názvy souborů s klíčovým slovem "file" z contents.txt
potrubím (jak je znázorněno), takže výstup cat
příkaz je poskytován jako vstup pro grep
příkaz. Dále přidáme potrubí pro provedení awk
příkaz, který zobrazí sloupec 9 z filtrovaného výstupu z grep
příkaz. Můžeme také spočítat počet řádků v contents.txt
pomocí wc -l
příkaz.
Pojmenované propojení může trvat tak dlouho, dokud je systém v provozu, nebo dokud není smazán. Je to speciální soubor, který se řídí mechanismem FIFO (first in, first out). Lze jej použít jako běžný soubor; tj. můžete do něj psát, číst z něj a otevírat nebo zavírat. Chcete-li vytvořit pojmenovaný kanál, příkaz je:
mkfifo <pipe-name>
Tím se vytvoří soubor pojmenovaného kanálu, který lze použít i ve více relacích shellu.
Dalším způsobem, jak vytvořit FIFO pojmenované potrubí, je použít tento příkaz:
mknod p <pipe-name>
Chcete-li přesměrovat standardní výstup libovolného příkazu na jiný proces, použijte >
symbol. Chcete-li přesměrovat standardní vstup libovolného příkazu, použijte <
symbol.
Jak je ukázáno výše, výstup ls -al
příkaz je přesměrován na contents.txt
a vložen do souboru. Podobně vstup pro tail
příkaz je poskytován jako contents.txt
prostřednictvím <
symbol.
Zde jsme vytvořili pojmenované potrubí, my-named-pipe
a přesměroval výstup ls -al
příkaz do pojmenovaného kanálu. Můžeme otevřít novou shellovou relaci a cat
obsah pojmenovaného kanálu, který zobrazuje výstup ls -al
příkaz, jak bylo dodáno dříve. Všimněte si, že velikost pojmenovaného kanálu je nula a má označení "p".
Takže až budete příště pracovat s příkazy na linuxovém terminálu a zjistíte, že přesouváte data mezi příkazy, doufejme, že roura tento proces urychlí a zjednoduší.