Mi az a Stderr?

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

Unix-szerű operációs rendszerekben, mint például a Linux, a MacOS X és a BSD, a stderr a POSIX szabvány által definiált. Alapértelmezett fájlleíró száma 2 .

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

Stderr a Linux parancssorában

A bash-ban a standard hiba átirányítható a parancssorban. A stderr átirányítása hasznos lehet, ha valamilyen hibaüzenetet kell elkülönítenie egy külön naplófájlba, vagy elrejteni a hibaüzeneteket.

Fontolja meg például a következő keresési parancsot:

 megtalálja / -iname '* valami *' 
 / usr / share / doc / something / usr / share / doc / valami / példák / something_random talál: `/ run / udisks2 ': Engedély megtagadva:` / run / wpa_supplicant': Engedély megtagadva / usr / share / something / usr / játékok / valami 

Hibát szerezzünk, mert a keresés néhány olyan rendszerkönyvtárat keres, amelyeknek nincs olvasási engedélye. Azok a sorok, amelyek azt mondják, hogy az "Engedély megtagadva" hibaüzenetek, és a stderr- nek írták. A többi sort stdout-ra (standard kimenetre) írtuk. Alapértelmezés szerint mindkettő megjelenik a terminálon.

A stderr elrejtéséhez átirányíthatjuk azokat a 2-es szabványhiba fájlleírójának és egy "átirányító kimenet" operátornak, > .

 find / -iname '* valami *' 2> / dev / null 
 / usr / share / doc / valami / usr / share / doc / valami / példák / something_random / usr / share / valami / usr / játékok / valami 

A hibák már nem jelennek meg, mert az összes stderr kimenet átirányításra került a / dev / null-ra, a Linux speciális eszközére, amely „sehová megy”.

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

 find / -iname '* valami *' 2> output.txt 
 / usr / share / doc / valami / usr / share / doc / valami / példák / something_random / usr / share / valami / usr / játékok / valami 

Most, ha a kimenet.txt tartalmát kíséri, akkor a hibaüzenetek ott mentésre kerültek:

 cat output.txt 
 talál: `/ run / udisks2 ': Engedélyezés megtagadva:` / run / wpa_supplicant': Engedély megtagadva 

Az adatfolyamok átirányításának részletes ismertetését lásd: átirányítás a bash-ban.

Hibaüzenet, operációs rendszer kifejezések