Vad är Stderr?

Stderr, även känt som standardfel, är standardfilbeskrivaren där en process kan skriva felmeddelanden.

I Unix-liknande operativsystem, som Linux, MacOS X och BSD, definieras stderr av POSIX-standarden. Dess standardfilbeskrivningsnummer är 2 .

I terminalen är standardfelet inställt på användarens skärm.

Stderr på Linux-kommandoraden

I bash kan standardfel omdirigeras på kommandoraden. Omdirigering av stderr kan vara användbar om du behöver ta bort eventuella felmeddelanden till en separat loggfil eller dölja felmeddelandena helt.

Tänk på följande kommando:

 hitta / -inge '* något *' 
 / usr / share / doc / something / usr / share / doc / något / exempel / något_random hitta: `/ run / udisks2 ': Tillstånd nekad hitta:` / run / wpa_supplicant': Tillstånd nekad / usr / share / something / usr / games / något 

Vi får fel eftersom sökningen försöker söka några systemkataloger som vi inte har behörighet att läsa. Linjerna som säger "Tillstånd nekad" är felmeddelanden och skrivs till stderr . De andra raderna skrevs till stdout (standardutgång). Som standard visas de båda på terminalen.

För att dölja stderr kan vi omdirigera dem genom att referera till standardfelets filbeskrivningsnummer, 2 och en "omdirigeringsutgång" operatör, > .

 hitta / -inge '* något *' 2> / dev / null 
 / usr / share / doc / something / usr / share / doc / något / exempel / something_random / usr / dela / något / usr / games / something 

Felen visas inte längre, eftersom all utdata till stderr omdirigerades till / dev / null, den speciella enheten i Linux som "går ingenstans".

Vi kan också omdirigera alla fel till en fil:

 find / -iname '* something *' 2> output.txt 
 / usr / share / doc / something / usr / share / doc / något / exempel / something_random / usr / dela / något / usr / games / something 

Om du kattar innehållet i output.txt så ser du att felmeddelandena sparades där:

 katt output.txt 
 hitta: `/ run / udisks2 ': Tillstånd nekad hitta:` / run / wpa_supplicant': Tillstånd nekat 

För detaljerad information om hur du omdirigerar dataströmmar, se omdirigering i bash.

Felmeddelande, operativsystem villkor