Stderr



Normál hiba illusztráció

Stderr , más néven standard hiba , az alapértelmezett fájlleíró ahol egy folyamat írhat hibaüzenetek .



Ban ben Unix -mint operációs rendszer , mint például Linux , macOS X és BSD , stderr a POSIX határozza meg alapértelmezett . Alapértelmezett fájlleíró száma: kettő .

A terminálban a standard hiba alapértelmezés szerint a felhasználó képernyője.



Stderr a Linux parancssorán

Ban ben bash , a standard hiba átirányítható a parancs sor . Átirányítás stderr hasznos lehet, ha bármilyen hibaüzenetet külön kell rögzítenie napló fájlt, vagy teljesen rejtse el a hibaüzeneteket.

Fontolja meg például a következőket megtalálja parancs:



 find / -iname '*something*'
 /usr/share/doc/something /usr/share/doc/something/examples/something_random find: '/run/udisks2': Permission denied find: '/run/wpa_supplicant': Permission denied /usr/share/something /usr/games/something

Hibákat kapunk, mert megtalálja megpróbál keresni néhány olyan rendszerkönyvtárat, amelyek nincsenek nálunk engedély olvasni. Azok a sorok, amelyekben az „Engedély megtagadva” felirat szerepel, hibaüzeneteket tartalmaznak, amelyekhez írták őket stderr . A többi sort írták stdout ( normál kimenet ). Alapértelmezés szerint mindkettő megjelenik a terminálon.

Elbújni stderr , átirányíthatjuk őket a standard hiba fájlleíró számának hivatkozásával, kettő és egy „átirányítás kimenet” operátor, > .

 find / -iname '*something*' 2>/dev/null
 /usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something

A hibák már nem jelennek meg, mert az összes kimenet ide: stderr átirányították / dev / null , a Linux speciális eszköze, amely 'sehová sem megy'.

Az összes hibát átirányíthatjuk egy fájlba is:

 find / -iname '*something*' 2>output.txt
 /usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something

Most, ha te macska tartalma output.txt , látni fogja, hogy a hibaüzeneteket ott mentették:

 cat output.txt
 find: '/run/udisks2': Permission denied find: '/run/wpa_supplicant': Permission denied

Az adatfolyamok átirányításával kapcsolatos részletes információkért lásd: átirányítás a bash-ban .