V Bash shelli, ako aj v iných shell prostrediach, patrí presmerovanie vstupu a výstupu medzi základné a veľmi silné nástroje pre manipuláciu s dátami. Tieto techniky vám umožňujú flexibilne spracovávať, filtrovať, a zapisovať dáta z príkazov do súborov alebo iných príkazov. V tomto článku sa pozrieme na rôzne techniky presmerovania, ako aj praktické príklady, ktoré vám pomôžu efektívnejšie pracovať v Linuxe.
>
a >>
pri presmerovaní výstupu (prepisovanie vs. pripojenie)Pri práci s presmerovaním výstupu v shelli máte na výber medzi dvoma základnými operátormi: >
a >>
. Oba sa používajú na presmerovanie výstupu príkazu do súboru, avšak líšia sa v tom, ako spracovávajú existujúce súbory.
>
- Prepisovanie výstupuOperátor >
slúži na presmerovanie výstupu príkazu do súboru. Ak súbor už existuje, jeho obsah sa prepíše. Tento operátor je užitočný, keď chcete vymazať obsah súboru a zapísať nový výstup.
echo "Toto je nový text" > subor.txt
Výstup tohto príkazu bude zapísaný do súboru subor.txt
, pričom jeho predchádzajúci obsah bude prepísaný.
>>
- Pripojenie výstupuOperátor >>
slúži na pripojenie výstupu príkazu na koniec existujúceho súboru. Tento operátor je užitočný, ak chcete pridať nové dáta na koniec súboru, bez toho, aby ste vymazali jeho predchádzajúci obsah.
echo "Pridaný text" >> subor.txt
Výstup tohto príkazu bude pridaný na koniec súboru subor.txt
, zachovávajúc jeho predchádzajúci obsah.
<
a <<
(tu-dokumenty, dočasné súbory)Presmerovanie vstupu je užitočné, keď chcete, aby príkaz čítal údaje zo súboru alebo príkazu namiesto interaktívneho zadávania. Pre tento účel sa používajú operátory <
a <<
.
<
- Presmerovanie vstupu zo súboruOperátor <
slúži na presmerovanie vstupu z existujúceho súboru do príkazu. Tento operátor je veľmi užitočný, keď chcete spracovať obsah súboru bez jeho otvorenia v editore.
sort < subor.txt
Tento príkaz prečíta obsah súboru subor.txt
a zoradí jeho riadky.
<<
- Tu-dokumenty (viacriadkové vstupy)Operátor <<
slúži na zadanie viacriadkového vstupu priamo do príkazu v skripte. Tento príkaz sa často používa v skriptoch, keď chcete dočasne poskytnúť vstupy príkazom bez nutnosti vytvárania súborov.
cat << EOF
Toto je text
ktorý bude zadaný príkazu cat.
EOF
Príkaz cat
vypíše text medzi značkami EOF
priamo na obrazovku.
|
pre spájanie príkazov a tvorbu „reťazí“Operátor rúry |
je jedným z najsilnejších nástrojov v shelli. Umožňuje vám spájať príkazy tak, že výstup jedného príkazu sa stáva vstupom ďalšieho príkazu. Toto vám umožňuje vytvárať reťazce príkazov, ktoré spolupracujú na spracovaní dát.
Príklad: Ak chcete nájsť konkrétne slová v zozname súborov a zoradiť ich:
cat subory.txt | grep "text" | sort
Tento príkaz najprv získa obsah zo súboru subory.txt
, potom použije grep
na filtrovanie riadkov obsahujúcich „text“ a následne ich zoradí pomocou sort
.
2>
na presmerovanie chybových výstupov (stderr)V shelli sú výstupy rozdelené na štandardný výstup (stdout) a chybový výstup (stderr). Operátor 2>
slúži na presmerovanie chybových správ do súboru alebo iného príkazu.
Príklad:
ls non_existent_directory 2> chyba.txt
Tento príkaz spôsobí chybu, pretože adresár neexistuje, ale chybová správa bude presmerovaná do súboru chyba.txt
.
grep
, sort
, uniq
a head/tail
Presmerovanie a rúry sa veľmi často kombinujú s nástrojmi ako grep
, sort
, uniq
, head
a tail
na efektívne spracovanie a analýzu dát. Tieto príkazy môžu byť kombinované na filtrovanie, triedenie, odstraňovanie duplicít a výber konkrétnych častí výstupu.
grep
, sort
a uniq
grep "chyba" log.txt | sort | uniq
Tento príkaz vyhľadá slová „chyba“ v súbore log.txt
, zoradí ich a odstráni duplicity.
head
a tail
cat subory.txt | head -n 10 | tail -n 5
Tento príkaz zobrazí riadky 6 až 10 z prvých 10 riadkov súboru subory.txt
.
Ak sa chcete dozvedieť viac o efektívnom používaní týchto nástrojov v shell skriptoch, navštívte náš Kurz shell – Programovanie v UNIX shelli pre systémových administrátorov.
Viac informacií preberáme na kurze: