Presmerovanie vstupu a výstupu: Základný krok k majstrovstvu v shelli

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.

1. Rozdiel medzi > 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ýstupu

Operá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ýstupu

Operá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.

2. Vstup cez < 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úboru

Operá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.

3. Funkcia rúry | 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.

4. Využitie 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.

5. Praktické príklady kombinovania 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.

Príklad kombinácie 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.

Príklad kombinácie 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.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite si náš ebook teraz výnimočne zdarma!!!

Viac informacií preberáme na kurze:

Kurz SHELL - Programovanie v UNIX shelli pre systémových administrátorov

Marián Knězek

 

Súvisiace články: