Kas yra Stderr?

Stderr, taip pat žinomas kaip standartinė klaida, yra numatytasis failų deskriptorius, kuriame procesas gali rašyti klaidų pranešimus.

Unix tipo operacinėse sistemose, tokiose kaip Linux, MacOS X ir BSD, stderr yra apibrėžtas POSIX standartu. Numatytasis failo deskriptoriaus numeris yra 2 .

Terminalo standartinės klaidos yra vartotojo ekrane.

Stderr Linux komandinėje eilutėje

Bazėje standartinė klaida gali būti nukreipta į komandų eilutę. „ Stderr“ peradresavimas gali būti naudingas, jei reikia užfiksuoti bet kokius klaidos pranešimus į atskirą žurnalo failą arba visiškai paslėpti klaidos pranešimus.

Pavyzdžiui, apsvarstykite šią paieškos komandą:

 rasti / -iname „* kažkas *“ 
 / usr / share / doc / something / usr / share / doc / kažkas / pavyzdžiai / something_random rasti: `/ run / udisks2 ': neleidžiama gauti leidimo:` / run / wpa_supplicant': neleidžiama / usr / share / something / usr / žaidimai / kažkas 

Mes gauname klaidų, nes rasti bando ieškoti kelių sistemos katalogų, kurių neturime leidimo skaityti. Linijos, kurios sako „Neleidžiamas leidimas“, yra klaidų pranešimai ir buvo parašytos stderr . Kitos eilutės buvo parašytos stdout (standartinė išvestis). Pagal nutylėjimą jie abu rodomi terminale.

Jei norite paslėpti „ stderr“, mes galime juos nukreipti, nurodydami standartinės klaidos failų deskriptoriaus numerį 2 ir „peradresavimo išvestį“ operatorių, > .

 rasti / -iname '* kažką *' 2> / dev / null 
 / usr / share / doc / kažkas / usr / share / doc / kažkas / pavyzdžiai / something_random / usr / share / kažkas / usr / žaidimai / kažkas 

Klaidos nebėra rodomos, nes visos stderr išvestys buvo nukreiptos į / dev / null, specialų įrenginį, „Linux“, kuris „niekur neveikia“.

Taip pat galėtume nukreipti visas klaidas į failą:

 find / -iname '* kažkas *' 2> output.txt 
 / usr / share / doc / kažkas / usr / share / doc / kažkas / pavyzdžiai / something_random / usr / share / kažkas / usr / žaidimai / kažkas 

Dabar, jei katė išvesties.txt turinį, pamatysite, kad čia buvo išsaugoti klaidų pranešimai:

 katė output.txt 
 rasti: „/ run / udisks2“: neleidžiama gauti leidimo: „/ run / wpa_supplicant“: neleidžiama naudoti leidimo 

Išsamesnės informacijos apie tai, kaip nukreipti duomenų srautus, žr.

Klaidos pranešimas, operacinės sistemos sąlygos