Stderr

Stderr , zināms arī kā standarta kļūda , ir noklusējums faila deskriptors kur process var rakstīt kļūdu ziņojumi .
In Unix līdzīgi operētājsistēmas , piemēram, Linux , macOS X un BSD , stderr definē POSIX standarta . Tās noklusējuma faila deskriptora numurs ir divi .
Terminālā standarta kļūda pēc noklusējuma ir lietotāja ekrāns.
Stderr uz Linux komandrindas
In bash , standarta kļūdu var novirzīt uz komandrinda . Notiek novirzīšana stderr var būt noderīgi, ja jums jāaptver visi kļūdu ziņojumi atsevišķi žurnāls failu vai pilnībā paslēpiet kļūdu ziņojumus.
Piemēram, apsveriet sekojošo atrast komanda:
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
Mēs saņemam kļūdas, jo atrast mēģina meklēt dažus sistēmas direktorijus, kuru mums nav atļauju Lasīt. Rindas, kurās teikts “Atļauja liegta”, ir kļūdu ziņojumi, un uz tām tika rakstīts stderr . Pārējās rindas tika rakstītas stdout ( standarta izeja ). Pēc noklusējuma viņi abi tiek rādīti terminālā.
Slēpties stderr , mēs tos varam novirzīt, atsaucoties uz standarta kļūdas faila deskriptora numuru, divi un “novirzīšanas izvades” operators, > .
find / -iname '*something*' 2>/dev/null
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something
Kļūdas vairs netiek parādītas, jo visa izvade uz stderr tika novirzīts uz / dev / null , īpašā ierīce Linux, kas “nekur nepazūd”.
Visas kļūdas mēs varētu arī novirzīt uz failu:
find / -iname '*something*' 2>output.txt
/usr/share/doc/something /usr/share/doc/something/examples/something_random /usr/share/something /usr/games/something
Tagad, ja jūs kaķis satura saturs output.txt , jūs redzēsiet, ka kļūdu ziņojumi tika saglabāti tur:
cat output.txt
find: '/run/udisks2': Permission denied find: '/run/wpa_supplicant': Permission denied
Detalizētu informāciju par datu straumju novirzīšanu skatiet sadaļā novirzīšana bash .