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/tail
Rů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 uniq
grep "chyba" log.txt | sort | uniq
Tento příkaz vyhledá „chyba“ v souboru log.txt
, seřadí výstup a odstraní duplicity.
head
a tail
cat 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: