Három fájlleíró van: stdin, stdout és stderr (std=standard).
Alapvetően a következők tehetők meg:
Egy kis magyarázat, hogyan is kell mindezt érteni: a less paranccsal meg tudod nézni mind az stdout "tartalmát" (ami a bufferen marad), mind az stderr-ét, ami a képernyőn jelenik meg, de törlődik, amint olvasni próbálod a buffert.
Ennek hatására a program kimenete fájlba íródik.
ls -l > ls-l.txt
Itt létrejön az "ls-l.txt" nevű fájl, melynek tartalma meg fog egyezni
azzal, amit az "ls -l" parancs futtatásakor a képernyőn látnál.
Hatására a program stderr kimenete fájlba íródik.
grep da * 2> grep-errors.txt
Itt is létrejön a "grep-errors.txt" nevű fájl, melynek tartalma a "grep
da *" parancs stderr kimenetével fog megegyezni.
Ennek hatására a program stderr kimenetére lesznek írva az stdout-ra küldött adatok is.
grep da * 1>&2
Itt a parancs stdout kimenete az stderr-re lesz elküldve, ahogy ezt
már bizonyára észrevetted.
Most a program stderr kimenete az stdout-nak megfelelő fájlleíróba lesz írva.
grep * 2>&1
Itt az stderr-ra küldött adatok is az stdout-on jelennek meg. Ha ezt egy
csővel (pipe) összekötöd a less programmal láthatod, hogy azok a sorok, amik
normális esetben eltűnnének (mivel az stderr-ra írtuk őket), most
megmaradnak (hiszen az stdout-ra lettek irányítva).
Ebben az esetben a program minden kimenete fájlba kerül. Ez néha hasznos lehet például a cron bejegyzések esetén, ha egy programot teljes csöndben akarsz futtatni.
rm -f $(find / -name core) &> /dev/null
Ez (gondolva itt a cron bejegyzésekre) minden könyvtárból kitörli a "core"
nevű fájlokat. Fontos tisztában lenned azzal, hogy egy program
pontosan mit is csinál, mielőtt "megszünteted" a kimenetét.