 
                
    V Bash shelli, stejně jako v jiných shell prostředích, patří přesměrování vstupu a výstupu mezi základní a velmi silné nástroje pro manipulaci s daty. Tyto techniky vám umožňují flexibilně zpracovávat, filtrovat a zapisovat data z příkazů do souborů nebo jiných příkazů. V tomto článku se podíváme na různé techniky přesměrování, jakož i praktické příklady, které vám pomohou efektivněji pracovat v Linuxu.
> a >> při přesměrování výstupu (přepisování vs. připojení)Práce s přesměrováním výstupu v shellu vám dává možnost zvolit si mezi dvěma základními operátory: > a >>. Oba slouží pro přesměrování výstupu příkazu do souboru, ale liší se v tom, jak zacházejí s existujícími soubory.
> - Přepisování výstupuOperátor > slouží pro přesměrování výstupu příkazu do souboru. Pokud soubor již existuje, jeho obsah bude přepsán. Tento operátor je užitečný, když chcete vymazat obsah souboru a napsat nový výstup.
echo "Toto je nový text" > soubor.txt
    Výstup tohoto příkazu bude přepsán do souboru soubor.txt.
>> - Připojení výstupuOperátor >> slouží k připojení výstupu příkazu na konec již existujícího souboru. Tento operátor je užitečný, pokud chcete přidat nový obsah na konec souboru, aniž byste smazali ten stávající.
echo "Přidaný text" >> soubor.txt
    Tento příkaz připojí nový text na konec souboru soubor.txt.
< a << (tu-dokumenty, dočasné soubory)Přesměrování vstupu je užitečné, když chcete, aby příkaz četl data ze souboru nebo příkazu místo interaktivního zadávání. Pro tento účel se používají operátory < a <<.
< - Přesměrování vstupu ze souboruOperátor < slouží pro přesměrování vstupu z existujícího souboru do příkazu. Tento operátor je užitečný, když chcete zpracovat obsah souboru bez jeho otevření v editoru.
sort < soubor.txt
    Tento příkaz přesměruje obsah souboru soubor.txt do příkazu sort a seřadí řádky.
<< - Tu-dokumenty (víceřádkové vstupy)Operátor << slouží k zadání víceřádkového vstupu přímo do příkazu ve skriptu. Tento příkaz se často používá ve skriptech, když chcete dočasně poskytnout vstupy příkazům bez nutnosti vytváření souborů.
cat << EOF
    Toto je text
    který bude zadán příkazu cat.
    EOF
    Výstup bude obsahovat text mezi značkami EOF.
| pro spojování příkazů a tvorbu "řetězců"Operátor roury | je jedním z nejsilnějších nástrojů v shellu. Umožňuje vám spojit příkazy tak, že výstup jednoho příkazu se stane vstupem dalšího. Tento mechanismus vám umožní vytvářet řetězce příkazů, které spolupracují při zpracování dat.
Příklad: Pokud chcete najít konkrétní slova v souboru a seřadit je:
cat soubory.txt | grep "text" | sort
    Tento příkaz načte obsah souboru soubory.txt, použije grep na filtrování řádků obsahujících „text“ a nakonec je seřadí pomocí sort.
2> na přesměrování chybových výstupů (stderr)V shellu jsou výstupy rozděleny na standardní výstup (stdout) a chybový výstup (stderr). Operátor 2> slouží pro přesměrování chybových zpráv do souboru nebo jiného příkazu.
Příklad:
ls neexistující_adresář 2> chyba.txt
    Tento příkaz způsobí chybu, protože adresář neexistuje, ale chybová zpráva bude přesměrována do souboru chyba.txt.
grep, sort, uniq a head/tailRůzné techniky přesměrování a roury jsou velmi užitečné, když je kombinujete s nástroji jako grep, sort, uniq, head a tail, které vám umožní efektivně zpracovávat a analyzovat data.
grep, sort a uniqgrep "chyba" log.txt | sort | uniq
    Tento příkaz vyhledá „chyba“ v souboru log.txt, seřadí výstup a odstraní duplicity.
head a tailcat soubory.txt | head -n 10 | tail -n 5
    Tento příkaz vypíše řádky 6 až 10 z prvních 10 řádků souboru soubory.txt.
Pokud se chcete dozvědět více o efektivním využívání těchto nástrojů v shell skriptech, navštivte náš Kurz SHELL – Programování v UNIX shellu pro systémové administrátory.
Viac informacií preberáme na kurze:
