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.
ls > soubory.txt (Vytvoří seznam souborů, starý obsah smaže).date » log.txt (Přidá aktuální čas na konec logu).mail -s „Předmět“ admin@firma.cz < zprava.txtJak 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. |
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.
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í.
prikaz 2> /dev/null – Spustí příkaz, ale schová všechny chyby (nepotřebujeme je vidět, ani ukládat).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.