Uživatelské nástroje

Nástroje pro tento web


redirection

Redirection (Přesměrování)

Redirection je schopnost shellu změnit standardní cíle nebo zdroje datových proudů. Zatímco pipeline propojuje dva programy mezi sebou, přesměrování propojuje program se souborem nebo jiným datovým tokem.

1. Základní operátory přesměrování

V shellu používáme k ovládání toků speciální znaky, které řídí stdout, stderr a stdin.

Přesměrování výstupu (Output)

  • `>` (Overwrite): Přesměruje výstup do souboru a přepíše jeho obsah.
    • Příklad: ls > soubory.txt (Vytvoří seznam souborů, starý obsah smaže).
  • `»` (Append): Přesměruje výstup na konec souboru (připojí ho).
    • Příklad: date » log.txt (Přidá aktuální čas na konec logu).

Přesměrování vstupu (Input)

  • `<`: Místo čtení z klávesnice čte program ze souboru.
    • Příklad: mail -s „Předmět“ admin@firma.cz < zprava.txt

2. Práce s deskriptory (Pokročilé přesměrování)

Jak už víme, systémy používají čísla pro označení proudů (0=stdin, 1=stdout, 2=stderr). Tato čísla můžeme v syntaxi využít pro jemnější kontrolu:

Zápis Význam
2> Přesměruje pouze chybový výstup (stderr).
&> Přesměruje stdout i stderr najednou do jednoho souboru.
1>&2 Pošle standardní výstup do chybového kanálu.
2>&1 Pošle chybový výstup do standardního kanálu.

3. Here Documents (EOF)

Speciální formou přesměrování je tzv. Here Document (značka «). Umožňuje předat víceřádkový blok textu přímo do příkazu v rámci skriptu.

  • Příklad:
cat << EOF > konfigurace.conf
server_name = localhost
port = 8080
EOF

Tento blok vytvoří soubor s daným obsahem bez nutnosti otevírat editor.

4. Černá díra systému: /dev/null

Při přesměrování se často setkáte s virtuálním zařízením /dev/null. Cokoli do něj pošlete, nenávratně zmizí.

  • Využití: prikaz 2> /dev/null – Spustí příkaz, ale schová všechny chyby (nepotřebujeme je vidět, ani ukládat).

5. Praktické využití v automatizaci

Redirection je základem pro:

  • Logování: Ukládání běhu skriptů pro pozdější analýzu.
  • Generování souborů: Dynamické vytváření konfiguračních souborů na základě proměnných.
  • Tiché skripty: Potlačení zbytečných výpisů (tzv. „verbose“ výstupy), které by v cronu zbytečně generovaly e-maily.
Tip: Dávejte pozor na rozdíl mezi `>` a `»`. Jedno zapomenuté znaménko navíc (použití `>` místo `»`) může vést k nechtěnému smazání důležitého logu, který se budoval měsíce.

Zpět na Linux

redirection.txt · Poslední úprava: autor: admin