Következő Előző Tartalom

3. Az átirányításról

3.1 Elmélet és gyors útbaigazítás

Három fájlleíró van: stdin, stdout és stderr (std=standard).

Alapvetően a következők tehetők meg:

  1. stdout fájlba irányítása
  2. stderr fájlba irányítása
  3. stdout stderr-be irányítása
  4. stderr stdout-ba irányítása
  5. stderr és stdout fájlba irányítása
  6. stderr és stdout stdout-ba irányítása
  7. stderr és stdout stderr-be irányítása
Az 1 az stdout, a 2 az stderr (a 0 pedig az stdin - a ford.).

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.

3.2 Példa: az stdout fájlba irányítása

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.

3.3 Példa: az stderr fájlba irányítása

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.

3.4 Példa: az stdout stderr-be történő irányítása

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.

3.5 Példa: az stderr stdout-ba történő irányítása

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

3.6 Példa: az stderr és stdout fájlba irányítása

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.


Következő Előző Tartalom