Obsah

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)

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

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.

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í.

5. Praktické využití v automatizaci

Redirection je základem pro:

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