Három állományleíró létezik a stdin,stdout és a stderr (std=standard ->szabványos).
Alapvető lehetőségeid:
stdout átirányítása állományba
stderr átirányítása állományba
stdout átirányítása stderr-re
stderr átirányítása stdout-ra
stderr és a stdout átirányítása állományba
stderr és a stdout átirányítása stdout-ra
stderr és a stdout átirányítása stderr-re
1 'jelöli' stdout-t és a 2 stderr-t.
Kiegészítésként megjegyezzük hogy az stdout (melynek tartalmát puffer tárolja) és a stderr mely a képernyőre íródik látható a less paranccsal a stderr tartalma azonban böngészéskor elvész.
A little note for seeing this things: with the less command you can view both stdout (which will remain on the buffer) and the stderr that will be printed on the screen, but erased as you try to 'browse' the buffer.
Eredmény a program kimenete az állományba íródik.
ls -l > ls-l.txt
Egy 'ls-l.txt' nevű állomány jön létre amely tartalmazza a 'ls -l' parancs végrehajtásának eredményét.
Eredmény az stderr kimenete a programnak állományba íródik.
grep da * 2> grep-errors.txt
Egy 'grep-errors.txt' nevű állomány jön létre amely tartalmazza a 'grep da *' végrehajtásakor keletekező stderr részt.
Eredmény az stderr kimenete a programnak azonos állományleíróba kerül az stdout-tal.
grep da * 1>&2
Az stdout eredménye a parancsnak átirányítódik a stderr-re. Megjegyzem van más megoldás is erre.
Eredmény az stdout kimenete a programnak azonos állományleíróba kerül az stderr-rel.
grep * 2>&1
Az stderr eredménye a parancsnak átirányítódik a stdout-ra. Az eredmény less paranccsal történő feldolgozásakor a az eddig eltűnő sorok (az stderr kimenet) böngészhetők - mivel a stout-ra laettek irányítva.
Most minden kimenet állományba kerül. A megoldás hasznos időszakos végrehajtások esetén (cron), amennyiben a teljesen "csendes" végrehajtást akarod elérni.
rm -f $(find / -name core) &> /dev/null
Ez (feltételezhetően cron bemenet) töröl minden 'core' nevű állományt az összes könyvtárban. Igazán elegáns a működés ha az összes kimenetet eltünteted.