Tovább Vissza Tartalom


3. Részletesen az átirányításról

3.1 Elmélet és rövid hivatkozások

Három állományleíró létezik a stdin,stdout és a stderr (std=standard ->szabványos).

Alapvető lehetőségeid:

  1. stdout átirányítása állományba

  2. stderr átirányítása állományba

  3. stdout átirányítása stderr-re

  4. stderr átirányítása stdout-ra

  5. stderr és a stdout átirányítása állományba

  6. stderr és a stdout átirányítása stdout-ra

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

3.2 Példa: stdout állományba

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.

3.3 Példa: stderr állományba

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.

3.4 Példa: stdout 2 stderr

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.

3.5 Példa: stderr 2 stdout

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.

3.6 Példa: stderr és a stdout 2 állományba

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.


Tovább Vissza Tartalom