GNU/Linux >> Znalost Linux >  >> Linux

Práce s datovými toky na příkazovém řádku Linuxu

Poznámka autora: Velká část obsahu tohoto článku je vyňata z kapitoly 3:Datové toky z mé nové knihy The Linux Philosophy for SysAdmins, s některými významnými úpravami, aby odpovídaly formátu článku Opensource.com.

Všechno v Linuxu se točí kolem datových proudů – zejména textových proudů. Datové toky jsou suroviny, na kterých GNU Utilities, základní nástroje Linuxu a mnoho dalších nástrojů příkazového řádku vykonávají svou práci.

Jak již název napovídá, datový proud je proud dat – zejména textových dat – předávaných z jednoho souboru, zařízení nebo programu do jiného pomocí STDIO. Tato kapitola představuje použití kanálů k propojení proudů dat z jednoho obslužného programu do druhého pomocí STDIO. Dozvíte se, že funkcí těchto programů je nějakým způsobem transformovat data. Dozvíte se také o použití přesměrování k přesměrování dat do souboru.

Linuxový terminál

  • 7 nejlepších emulátorů terminálu pro Linux
  • 10 nástrojů příkazového řádku pro analýzu dat v systému Linux
  • Stáhnout nyní:SSH cheat sheet
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Výukové programy příkazového řádku systému Linux

Termín „transformace“ používám ve spojení s těmito programy, protože primárním úkolem každého z nich je transformovat příchozí data z STDIO specifickým způsobem, jak zamýšlel správce systému, a odeslat transformovaná data do STDOUT pro případné použití jiným transformačním programem. nebo přesměrování do souboru.

Standardní termín „filtry“ naznačuje něco, s čím nesouhlasím. Podle definice je filtr zařízení nebo nástroj, který něco odstraňuje, například vzduchový filtr odstraňuje nečistoty ze vzduchu, aby se spalovací motor vašeho automobilu na tyto částice neumělnil k smrti. V mých hodinách chemie na střední a vysoké škole se k odstranění částic z kapaliny používal filtrační papír. Vzduchový filtr v mém domácím HVAC systému odstraňuje částice, které nechci dýchat.

I když někdy odfiltrují nechtěná data ze streamu, dávám přednost termínu „transformátory“, protože tyto nástroje umí mnohem více. Mohou přidávat data do streamu, upravovat data úžasnými způsoby, třídit je, přeskupovat data v každém řádku, provádět operace na základě obsahu datového proudu a mnoho dalšího. Klidně použijte libovolný termín, který preferujete, ale já preferuji transformátory. Očekávám, že jsem v tom sám.

S datovými toky lze manipulovat vložením transformátorů do toku pomocí potrubí. Každý program transformátoru používá správce systému k provedení nějaké operace s daty v toku, a tak nějakým způsobem mění jeho obsah. Přesměrování pak lze použít na konci kanálu k nasměrování datového toku do souboru. Jak již bylo zmíněno, tento soubor může být skutečný datový soubor na pevném disku nebo soubor zařízení, jako je oddíl disku, tiskárna, terminál, pseudoterminál nebo jakékoli jiné zařízení připojené k počítači.

Schopnost manipulovat s těmito datovými toky pomocí těchto malých, ale výkonných transformačních programů je zásadní pro sílu rozhraní příkazového řádku Linuxu. Mnohé z hlavních nástrojů jsou transformační programy a používají STDIO.

Ve světě Unixu a Linuxu je proud tok textových dat, která pocházejí z nějakého zdroje; proud může proudit do jednoho nebo více programů, které jej nějakým způsobem transformují, a poté může být uložen do souboru nebo zobrazen v terminálové relaci. Jako správce systému je vaše práce úzce spojena s manipulací s vytvářením a tokem těchto datových toků. V tomto příspěvku prozkoumáme datové toky – co to je, jak je vytvořit a trochu o tom, jak je používat.

Textové streamy – univerzální rozhraní

Použití standardního vstupu/výstupu (STDIO) pro vstup a výstup programu je klíčovým základem linuxového způsobu práce. STDIO bylo poprvé vyvinuto pro Unix a od té doby si našlo cestu do většiny ostatních operačních systémů, včetně DOS, Windows a Linux.

Toto je filozofie Unixu:Psát programy, které dělají jednu věc a dělají ji dobře. Napište programy, které budou spolupracovat. Pište programy pro zpracování textových proudů, protože to je univerzální rozhraní.“

— Doug McIlroy, Základy unixové filozofie

STDIO

STDIO bylo vyvinuto Kenem Thompsonem jako součást infrastruktury potřebné k implementaci potrubí na raných verzích Unixu. Programy, které implementují STDIO, používají standardizované popisovače souborů pro vstup a výstup spíše než soubory, které jsou uloženy na disku nebo jiném záznamovém médiu. STDIO lze nejlépe popsat jako datový tok s vyrovnávací pamětí a jeho primární funkcí je streamovat data z výstupu jednoho programu, souboru nebo zařízení na vstup jiného programu, souboru nebo zařízení.

Existují tři datové toky STDIO, z nichž každý se automaticky otevře jako soubor při spuštění programu – tedy těch programů, které používají STDIO. Každý datový tok STDIO je spojen s popisovačem souboru, což je pouze sada metadat popisujících atributy souboru. Popisovače souborů 0, 1 a 2 jsou explicitně definovány konvencí a dlouhou praxí jako STDIN, STDOUT a STDERR.

STDIN, popisovač souboru 0 , je standardní vstup, který se obvykle zadává z klávesnice. STDIN lze místo klávesnice přesměrovat z libovolného souboru, včetně souborů zařízení. Není běžné, že je potřeba přesměrovat STDIN, ale lze to udělat.

STDOUT, popisovač souboru 1 , je standardní výstup, který standardně odesílá datový tok na displej. Je běžné přesměrovat STDOUT do souboru nebo jej přesměrovat do jiného programu pro další zpracování.

STDERR, popisovač souboru 2 . Datový tok pro STDERR se také obvykle odesílá na displej.

Pokud je STDOUT přesměrován na soubor, STDERR se na obrazovce nadále zobrazuje. To zajišťuje, že když se na terminálu nezobrazuje samotný datový tok, je to STDERR, čímž je zajištěno, že uživatel uvidí jakékoli chyby vyplývající z provádění programu. STDERR lze také přesměrovat na stejný nebo předat dalšímu transformačnímu programu v potrubí.

STDIO je implementováno jako knihovna C, stdio.h , který lze zahrnout do zdrojového kódu programů, aby jej bylo možné zkompilovat do výsledného spustitelného souboru.

Jednoduché streamy

Následující experimenty můžete bezpečně provádět v /tmp adresář vašeho hostitele Linuxu. Jako uživatel root vytvořte /tmp PWD, vytvořte testovací adresář a poté udělejte z nového adresáře PWD.

# cd /tmp ; mkdir test ; cd test

Zadejte a spusťte následující program příkazového řádku k vytvoření některých souborů s obsahem na jednotce. Používáme dmesg příkaz jednoduše poskytnout data, která mají soubory obsahovat. Na obsahu nezáleží tolik, jako na skutečnosti, že každý soubor má nějaký obsah.

# for I in 0 1 2 3 4 5 6 7 8 9 ; do dmesg > file$I.txt ; done 

Ověřte, že v /tmp/ je nyní alespoň 10 souborů s názvy soubor0.txt prostřednictvím file9.txt .

# ll
total 1320
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file0.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file1.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file2.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file3.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file4.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file5.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file6.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file7.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file8.txt
-rw-r--r-- 1 root root 131402 Oct 17 15:50 file9.txt

Datové toky jsme vygenerovali pomocí dmesg příkaz, který byl přesměrován na řadu souborů. Většina základních nástrojů používá STDIO jako svůj výstupní tok a ty, které generují datové toky, namísto toho, aby nějakým způsobem transformovaly datový tok, lze použít k vytvoření datových toků, které budeme používat pro naše experimenty. Datové toky mohou být krátké jako jeden řádek nebo dokonce jeden znak a tak dlouhé, jak je potřeba.

Prozkoumání pevného disku

Nyní je čas udělat malý průzkum. V tomto experimentu se podíváme na některé struktury souborového systému.

Začněme něčím jednoduchým. Měli byste být alespoň trochu obeznámeni s dd příkaz. Oficiálně známý jako „výpis disku“ jej mnoho správců z dobrého důvodu nazývá „ničitel disků“. Mnoho z nás neúmyslně zničilo obsah celého pevného disku nebo oddílu pomocí dd příkaz. Proto se zúčastníme /tmp/test k provedení některých z těchto experimentů.

Navzdory své pověsti dd může být docela užitečné při prozkoumávání různých typů úložných médií, pevných disků a oddílů. Použijeme jej také jako nástroj k prozkoumání dalších aspektů Linuxu.

Pokud ještě nejste, přihlaste se do terminálové relace jako root. Nejprve musíme určit speciální soubor zařízení pro váš pevný disk pomocí lsblk příkaz.

[root@studentvm1 test]# lsblk -i
NAME                                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                    8:0    0   60G  0 disk
|-sda1                                 8:1    0    1G  0 part /boot
`-sda2                                 8:2    0   59G  0 part
  |-fedora_studentvm1-pool00_tmeta   253:0    0    4M  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  |   |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  |   `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-swap           253:4    0   10G  0 lvm  [SWAP]
  |-fedora_studentvm1-usr            253:5    0   15G  0 lvm  /usr
  |-fedora_studentvm1-home           253:7    0    2G  0 lvm  /home
  |-fedora_studentvm1-var            253:8    0   10G  0 lvm  /var
  `-fedora_studentvm1-tmp            253:9    0    5G  0 lvm  /tmp
sr0                                   11:0    1 1024M  0 rom

Z toho vidíme, že na tomto hostiteli je pouze jeden pevný disk, že speciální soubor zařízení, který je k němu přiřazen, je /dev/sda a že má dva oddíly. /dev/sda1 oddíl je spouštěcí oddíl a /dev/sda2 oddíl obsahuje skupinu svazků, na které byly vytvořeny zbývající logické svazky hostitele.

Jako root v relaci terminálu použijte dd příkaz k zobrazení spouštěcího záznamu pevného disku za předpokladu, že je přiřazen k /dev/sda přístroj. bs= argument není to, co byste si mohli myslet; jednoduše určuje velikost bloku a count= argument určuje počet bloků pro výpis do STDIO. if= argument určuje zdroj datového toku, v tomto případě /dev/sda přístroj. Všimněte si, že se nedíváme na první blok oddílu, ale na úplně první blok pevného disku.

[root@studentvm1 test]# dd if=/dev/sda bs=512 count=1
�c�#�м���؎���|�#�#���!#��8#u
                            ��#���u��#�#�#�|���t#�L#�#�|���#�����€t��pt#���y|1��؎м ��d|<�t#��R�|1��D#@�D��D#�##f�#\|f�f�#`|f�\
                                      �D#p�B�#r�p�#�K`#�#��1��������#a`���#f��u#����f1�f�TCPAf�#f�#a�&Z|�#}�#�.}�4�3}�.�#��GRUB GeomHard DiskRead Error
�#��#�<u��ܻޮ�###��� ������ �_U�1+0 records in
1+0 records out
512 bytes copied, 4.3856e-05 s, 11.7 MB/s

Tím se vytiskne text spouštěcího záznamu, což je první blok na disku – jakýkoli disk. V tomto případě jsou zde informace o souborovém systému, a přestože jsou nečitelné, protože jsou uloženy v binárním formátu, tabulka oddílů. Pokud by se jednalo o zaváděcí zařízení, fáze 1 GRUB nebo jiného zavaděče by se nacházela v tomto sektoru. Poslední tři řádky obsahují údaje o počtu záznamů a zpracovaných bajtech.

Počínaje začátkem /dev/sda1 , podívejme se na několik bloků dat najednou, abychom našli to, co chceme. Příkaz je podobný předchozímu, až na to, že jsme zadali několik dalších bloků dat k zobrazení. Možná budete muset zadat méně bloků, pokud váš terminál není dostatečně velký na to, aby zobrazil všechna data najednou, nebo můžete data převést přes méně obslužný program a použít jej k procházení dat – oba způsoby fungují. Pamatujte, že to všechno děláme jako uživatel root, protože uživatelé, kteří nejsou root, nemají požadovaná oprávnění.

Zadejte stejný příkaz jako v předchozím experimentu, ale zvyšte počet zobrazených bloků na 100, jak je znázorněno níže, abyste zobrazili více dat.

[root@studentvm1 test]# dd if=/dev/sda1 bs=512 count=100
##33��#:�##�� :o�[:o�[#��S�###�q[#
                                  #<�#{5OZh�GJ͞#t�Ұ##boot/bootysimage/booC�dp��G'�*)�#A�##@
     #�q[
�## ##  ###�#���To=###<#8���#'#�###�#�����#�'  �����#Xi  �#��`  qT���
  <���
      �  r����  ]�#�#�##�##�##�#�##�##�##�#�##�##�#��#�#�##�#�##�##�#��#�#����#       �     �#    �#    �#

�#
�#
�#
  �
   �#
     �#
       �#
         �
          �#
            �#
              �#100+0 records in
100+0 records out
51200 bytes (51 kB, 50 KiB) copied, 0.00117615 s, 43.5 MB/s

Nyní zkuste tento příkaz. Nebudu zde reprodukovat celý datový tok, protože by to zabralo obrovské množství místa. Použijte Ctrl-C k přerušení a zastavení toku dat.

[root@studentvm1 test]# dd if=/dev/sda

Tento příkaz vytvoří proud dat, který tvoří celý obsah pevného disku, /dev/sda , včetně spouštěcího záznamu, tabulky oddílů a všech oddílů a jejich obsahu. Tato data by mohla být přesměrována do souboru pro použití jako kompletní záloha, ze které lze provést obnovu na holé železo. Mohlo by být také odesláno přímo na jiný pevný disk ke klonování prvního. Tento konkrétní experiment však neprovádějte.

[root@studentvm1 test]# dd if=/dev/sda of=/dev/sdx

Můžete vidět, že dd příkaz může být velmi užitečný pro zkoumání struktur různých typů souborových systémů, lokalizaci dat na vadném úložném zařízení a mnoho dalšího. Vytváří také proud dat, na kterých můžeme použít nástroje transformátoru k úpravě nebo zobrazení.

Skutečným bodem je, že dd , stejně jako mnoho linuxových příkazů, vytváří jako výstup proud dat. Tento datový tok lze vyhledávat a manipulovat s ním mnoha způsoby pomocí jiných nástrojů. Může být dokonce použit pro zálohy podobné duchům nebo duplikaci disků.

Náhodnost

Ukazuje se, že náhodnost je v počítačích žádoucí věc – kdo ví? Existuje řada důvodů, proč by správci systému mohli chtít generovat proud náhodných dat. Proud náhodných dat je někdy užitečný k přepsání obsahu celého oddílu, jako je /dev/sda1 , nebo dokonce celý pevný disk, jako v /dev/sda .

Proveďte tento experiment jako uživatel bez oprávnění root. Zadejte tento příkaz pro tisk nekonečného proudu náhodných dat do STDIO.

[student@studentvm1 ~]$ cat /dev/urandom

Použijte Ctrl-C k přerušení a zastavení toku dat. Možná budete muset použít Ctrl-C několikrát.

Náhodná data se také používají jako vstupní zdroj pro programy, které generují náhodná hesla a náhodná data a čísla pro použití ve vědeckých a statistických výpočtech. Náhodnosti a dalším zajímavým zdrojům dat se budu věnovat trochu podrobněji v kapitole 24:Všechno je soubor.

Trubkové sny

Trubky jsou zásadní pro naši schopnost dělat úžasné věci na příkazovém řádku, a to natolik, že si myslím, že je důležité uznat, že je vynalezl Douglas McIlroy během prvních dnů Unixu (díky, Dougu!). Webová stránka Princetonské univerzity obsahuje fragment rozhovoru s McIlroyem, ve kterém pojednává o vytvoření dýmky a počátcích filozofie Unixu.

Všimněte si použití kanálů v následujícím jednoduchém programu příkazového řádku, který zobrazuje každého přihlášeného uživatele najednou, bez ohledu na to, kolik přihlášení má aktivní. Proveďte tento experiment jako student. Zadejte příkaz zobrazený níže:

[student@studentvm1 ~]$ w | tail -n +3 | awk '{print $1}' | sort | uniq
root
student
[student@studentvm1 ~]$

Výsledky tohoto příkazu vytvářejí dva řádky dat, které ukazují, že uživatel root i student jsou přihlášeni. Neukazuje, kolikrát je každý uživatel přihlášen. Vaše výsledky se budou téměř jistě lišit od mých.

Pipes – reprezentované svislým pruhem ( | ) – jsou syntaktické lepidlo, operátor, který spojuje tyto nástroje příkazového řádku dohromady. Pipe umožňují standardní výstup z jednoho příkazu „propojit“, tj. streamovat ze standardního výstupu jednoho příkazu do standardního vstupu dalšího příkazu.

Operátor |&lze použít k propojení STDERR spolu s STDOUT do STDIN dalšího příkazu. To není vždy žádoucí, ale nabízí flexibilitu ve schopnosti zaznamenávat datový tok STDERR pro účely určení problému.

Řetězec programů propojený s rourami se nazývá potrubí a programy, které používají STDIO, jsou oficiálně označovány jako filtry, ale já dávám přednost termínu „transformátory“.

Přemýšlejte o tom, jak by tento program musel fungovat, kdybychom nemohli datový tok z jednoho příkazu do druhého. První příkaz by provedl svůj úkol na datech a poté by výstup z tohoto příkazu musel být uložen do souboru. Další příkaz by musel načíst datový proud z mezisouboru a provést jeho modifikaci datového proudu a odeslat svůj vlastní výstup do nového dočasného datového souboru. Třetí příkaz by musel vzít svá data z druhého dočasného datového souboru a provést vlastní manipulaci s datovým tokem a poté uložit výsledný datový tok do dalšího dočasného souboru. V každém kroku by musely být názvy datových souborů nějakým způsobem přeneseny z jednoho příkazu na druhý.

Nemohu na to ani myslet, protože je to tak složité. Pamatujte:Jednoduchost skály!

Budování potrubí

Když dělám něco nového, řeším nový problém, obvykle nezadávám kompletní Bash příkazový kanál od začátku z hlavy. Obvykle začínám pouze s jedním nebo dvěma příkazy v kanálu a odtud buduji přidáváním dalších příkazů pro další zpracování datového toku. To mi umožňuje zobrazit stav datového toku po každém z příkazů v kanálu a podle potřeby provádět opravy.

Je možné vybudovat velmi složité kanály, které mohou transformovat datový tok pomocí mnoha různých nástrojů, které spolupracují se STDIO.

Přesměrování

Přesměrování je schopnost přesměrovat datový tok STDOUT programu do souboru namísto do výchozího cíle zobrazení. Znak „větší než“ (> ), neboli „gt“, je syntaktický symbol pro přesměrování STDOUT.

Přesměrování STDOUT příkazu lze použít k vytvoření souboru obsahujícího výsledky z tohoto příkazu.

[student@studentvm1 ~]$ df -h > diskusage.txt

Tento příkaz nemá žádný výstup na terminál, pokud nedojde k chybě. Je to proto, že datový tok STDOUT je přesměrován do souboru a STDERR je stále směrován do zařízení STDOUT, což je displej. Obsah souboru, který jste právě vytvořili, můžete zobrazit pomocí následujícího příkazu:

[student@studentvm1 test]# cat diskusage.txt 
Filesystem                          Size  Used Avail Use% Mounted on
devtmpfs                            2.0G     0  2.0G   0% /dev
tmpfs                               2.0G     0  2.0G   0% /dev/shm
tmpfs                               2.0G  1.2M  2.0G   1% /run
tmpfs                               2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/fedora_studentvm1-root  2.0G   50M  1.8G   3% /
/dev/mapper/fedora_studentvm1-usr    15G  4.5G  9.5G  33% /usr
/dev/mapper/fedora_studentvm1-var   9.8G  1.1G  8.2G  12% /var
/dev/mapper/fedora_studentvm1-tmp   4.9G   21M  4.6G   1% /tmp
/dev/mapper/fedora_studentvm1-home  2.0G  7.2M  1.8G   1% /home
/dev/sda1                           976M  221M  689M  25% /boot
tmpfs                               395M     0  395M   0% /run/user/0
tmpfs                               395M   12K  395M   1% /run/user/1000

Při použití symbolu> k přesměrování datového toku se zadaný soubor vytvoří, pokud ještě neexistuje. Pokud existuje, obsah je přepsán datovým tokem z příkazu. K připojení nového datového toku k jakémukoli existujícímu obsahu v souboru můžete použít symboly dvojnásobné větší než,>>.

[student@studentvm1 ~]$ df -h >> diskusage.txt

Můžete použít cat a/nebo less k zobrazení diskusage.txt za účelem ověření, že nová data byla připojena na konec souboru.

Symbol <(méně než) přesměrovává data na STDIN programu. Tuto metodu můžete použít k zadávání dat ze souboru do STDIN příkazu, který nebere jako argument název souboru, ale používá STDIN. Ačkoli vstupní zdroje mohou být přesměrovány na STDIN, jako je soubor, který se používá jako vstup pro grep, obecně to není nutné, protože grep také bere název souboru jako argument pro specifikaci vstupního zdroje. Většina ostatních příkazů také bere název souboru jako argument pro svůj vstupní zdroj.

Jen se motat

grep příkaz se používá k výběru řádků, které odpovídají zadanému vzoru z proudu dat. grep je jedním z nejčastěji používaných transformátorových nástrojů a lze jej použít velmi kreativními a zajímavými způsoby. grep příkaz je jedním z mála, který lze správně nazvat filtr, protože filtruje všechny řádky datového toku, které nechcete; ve zbývajícím datovém toku ponechá pouze řádky, které chcete.

Pokud PWD není /tmp/test adresář, udělejte to tak. Nejprve vytvořte proud náhodných dat pro uložení do souboru. V tomto případě chceme poněkud méně náhodných dat, která by byla omezena na tisknutelné znaky. Dobrý program pro generátor hesel to dokáže. Následující program (možná budete muset nainstalovat pwgen pokud ještě není) vytvoří soubor, který obsahuje 50 000 hesel o délce 80 znaků s použitím každého tisknutelného znaku. Zkuste to bez přesměrování na random.txt nejprve soubor, abyste viděli, jak to vypadá, a poté to udělejte, jakmile přesměrujete výstupní datový tok do souboru.

$ pwgen -sy 80 50000 > random.txt

Vzhledem k tomu, že existuje tolik hesel, je velmi pravděpodobné, že některé řetězce znaků v nich jsou stejné. Nejprve cat random.txt a poté použijte grep příkaz k vyhledání krátkých, náhodně vybraných řetězců z posledních deseti hesel na obrazovce. V jednom z těchto deseti hesel jsem viděl slovo „see“, takže můj příkaz vypadal takto:grep see random.txt , a můžete to zkusit, ale měli byste si také vybrat nějaké vlastní řetězce ke kontrole. Nejlépe fungují krátké řetězce dvou až čtyř znaků.

$ grep see random.txt 
        R=p)'s/~0}wr~2(OqaL.S7DNyxlmO69`"12u]h@rp[D2%3}1b87+>Vk,;4a0hX]d7see;1%9|wMp6Yl.
        bSM_mt_hPy|YZ1<TY/Hu5{g#mQ<u_(@8B5Vt?w%i-&C>NU@[;zV2-see)>(BSK~n5mmb9~h)yx{a&$_e
        cjR1QWZwEgl48[3i-(^x9D=v)seeYT2R#M:>wDh?Tn$]HZU7}j!7bIiIr^cI.DI)W0D"'[email protected]
        z=tXcjVv^G\nW`,y=bED]d|7%s6iYT^a^Bvsee:v\UmWT02|P|nq%A*;+Ng[$S%*s)-ls"dUfo|0P5+n

Shrnutí

Právě použití rour a přesměrování umožňuje mnoho úžasných a výkonných úkolů, které lze provádět s datovými toky na příkazovém řádku Linuxu. Jsou to roury, které přenášejí datové toky STDIO z jednoho programu nebo souboru do druhého. Schopnost přenášet datové proudy prostřednictvím jednoho nebo více transformačních programů podporuje výkonnou a flexibilní manipulaci s daty v těchto proudech.

Každý z programů v pipeline demonstrovaných v experimentech je malý a každý dělá jednu věc dobře. Jsou to také transformátory; to znamená, že vezmou Standardní vstup, nějakým způsobem ho zpracují a výsledek pak pošlou na Standardní výstup. Implementace těchto programů jako transformátorů pro odesílání zpracovaných datových toků z jejich vlastního standardního výstupu na standardní vstup ostatních programů je doplňkem a nezbytná pro implementaci rour jako linuxového nástroje.

STDIO není nic jiného než proudy dat. Tato data mohou být téměř cokoli, od výstupu příkazu k zobrazení seznamu souborů v adresáři, nebo nekonečný proud dat ze speciálního zařízení, jako je /dev/urandom nebo dokonce stream, který obsahuje všechna nezpracovaná data z pevného disku nebo oddílu.

S jakýmkoli zařízením na počítači se systémem Linux lze zacházet jako s datovým tokem. Můžete použít běžné nástroje jako dd a cat pro výpis dat ze zařízení do datového toku STDIO, který lze zpracovat pomocí jiných běžných nástrojů Linuxu.


Linux
  1. Plánování úloh pomocí linuxového příkazu cron

  2. Mít krávu na příkazovém řádku Linuxu

  3. Přihlaste se do příkazového řádku Linuxu

  1. Naplánujte si úlohu pomocí příkazu Linux at

  2. Generujte hesla na příkazovém řádku Linuxu

  3. 8 tipů pro příkazový řádek Linuxu

  1. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  2. Práce s rourami na příkazovém řádku Linuxu

  3. Monitorování úrovně mikrofonu pomocí nástroje příkazového řádku v Linuxu