Átirányítsa az stdout és a stderr fájlt

Redirect Stdout Stderr File



Amikor bármely parancs kimenetét átirányítja egy fájlba, észre fogja venni, hogy a hibaüzenetek a terminál ablakába kerülnek nyomtatásra. Bármely parancs, amelyet bármely Linux shellben végrehajtanak, például a bash, három rendes I/O adatfolyamot használ. Az egyes folyamok ábrázolásához numerikus fájlleírót használnak.

  • A standard bemeneti adatfolyam (stdin): 0
  • A standard kimeneti adatfolyam (stdout): 1
  • A standard hibafolyam (stderr): 2

Ebben a bejegyzésben meg fogjuk érteni azokat az információkat, amelyek az stdout és a stderr fájlba való átirányítása alá tartoznak.







Standard kimenet (stdout):

Minden Linux alapú operációs rendszer meggyőződése, hogy a végrehajtott parancs alapértelmezett helye. Ezt a fogalmat mindenki stdout vagy standard kimenetként emlegeti, hogy könnyebb legyen a hangzás. A Bash vagy a Zsh shell folyamatosan keresi az alapértelmezett kimeneti helyet. Amikor a shell új kimenetet észlel, megjeleníti azt a terminál képernyőjén, hogy láthassa. Ellenkező esetben a kimenetet az alapértelmezett helyre küldi.



Standard hiba (stderr):

A standard hiba vagy stderr hasonló a standard bemenethez és kimenethez, de a hibaüzenetek tárolására szolgál. A standard hiba átirányítható a parancssorba vagy egy fájlba egy terminál használatával. Ha üzeneteket szeretne rögzíteni vagy tárolni külön naplófájlban, vagy el szeretné rejteni a hibaüzeneteket, akkor a stderr átirányítása segít. Most menjünk az stdout és a stderr átirányítás gyakorlati oldala felé.



Az stdout és a stderr átirányítása egy fájlba:

Mivel az átirányítás egy módszer a program kimenetének rögzítésére és bemenetként történő elküldésére egy másik parancsra vagy fájlra. Az I/O adatfolyamok átirányíthatók az n> operátor használatba vételével, ahol n a fájlleíró száma. Az stdout átirányításához az 1> -t használjuk, az stderr esetén a 2> operátort adjuk hozzá.





Létrehoztunk egy sample.txt nevű fájlt az átirányított kimenet tárolására az aktuális könyvtárunkban.



A (parancs> fájl) a klasszikus átirányítási operátor, amely csak a szabványos kimenetet irányítja át a terminálon látható standard hibával. Bemutatunk különböző lehetőségeket az stderr átirányítására is.

Az stderr és az stdout átirányítása külön fájlokba:

Az alábbiakban a parancs szintaxisa található az stdout és a stderr fájlok átirányítására.

parancs >ki2>hiba

Az alábbi parancs átirányítja a kimenetet a kimeneti fájlba, a hibaüzeneteket pedig a hiba fájlba.

$macskasample.txt>ki2>hiba

A stderr átirányítása az stdout -ba:

Gyakori gyakorlat, hogy az stderr -t egy program szabványos kimenetével átirányítják, hogy mindent egyetlen fájlban tárolja. Itt található a parancs szintaxisa az stderr stdout -ra való átirányításához:

parancs >ki2> &1$ls >samplefile.txt2> &1

$macskasamplefile.txt

> out átirányítások átirányítják az stdout fájlt a samplefile.txt fájlra, a 2> & 1 pedig az stdr -t az stdout aktuális helyére.

Ha az stderr először az stdout-ra van átirányítva, akkor az alábbi paranccsal irányítsa át az stdout fájlt.

parancs 2> &1 > fájlt$ls -hoz 2> &1 >samplefile.txt

$macskasamplefile.txt

A &> szintén ugyanazokra a funkciókra szolgál, amelyeket a 2> & 1 végez.

parancs &> fájlt$ls &>samplefile.txt

$macskasamplefile.txt

Az stdout és a stderr átirányítása egyetlen fájlba:

Az összes shell nem támogatja ezt az űrlap átirányítást, de a bash és a Zsh támogatja. Az Stdout és a stderr átirányítható a következő szintaxis használatával.

parancs &>ki$macskasample.txt&>ki

A cikk közelgő részében megnézzük az stdout és a stderr átirányítás külön példáját.

Az stdout átirányítása egy fájlba:

A szabványos kimenetet az 1 jelzi a fájlleíró számok listájában. A fájlleíró szám nélküli átirányítási parancs esetén a terminál 1 -re állította az értékét. Az stdout fájlba való átirányításának szintaxisa a következő:

parancs > fájlt

A sample.file fájlt használjuk az ls -al parancs szabványos kimenetének tárolására

$ls -hoz >sample.txt

$macskasample.txt

parancs 1> fájlt$ls 1>sample.txt

$macskasample.txt

Stderr átirányítása egy fájlba:

Használja a 2> operátort az stderr fájlba való átirányításához.

parancs 2> fájlt $ls -hoz 2>sample.txt

A stderr és az stdout végrehajtását egyetlen átirányítási parancsban kombinálhatjuk.

parancs 2>error.txt1>output.txt

Az alábbi példában a hibaüzenetek a error.txt fájlban lesznek tárolva, ahol a output.txt szabványos kimenete az ls parancs lesz.

$ls 2>error.txt1>output.txt

$macskaoutput.txt

Következtetés:

Az I/O adatfolyamok átirányításának és fájlleíróinak koncepciója nagyon értékes, ha Linux terminálon dolgozunk. Ebben a bejegyzésben a rendszeres I/O adatfolyamokról beszéltünk, beleértve a stdout és stderr -t. A bejegyzés első része részletes információkat tartalmaz az átirányításról, az I/O adatfolyamokról és a numerikus fájlleíróról. Ezután láthatta a gyakorlati példát az stdout és a stderr átirányítás különböző formáira.