Mida täpselt 2>/dev/null teeb?

What Exactly Does 2 Dev Null Do



Ükskõik, kas olete uus Linuxi kasutaja või kogenud bash -programmeerija, on väga tõenäoline, et kohtasite salajast käsku 2>/dev/null. Kuigi see käsk tundub tehniliselt keeruline, on selle eesmärk väga lihtne. See viitab nullseadmele, mida kasutatakse erinevate käskude väljundite summutamiseks. See artikkel jagab käsu 2>/dev/null iga osa, selgitab selle eesmärki ja näeb näiteid selle kasutamise kohta.

Nullseade - '/dev/null'

Kõigil Linuxi-põhistel süsteemidel on funktsioon nimega virtuaalsed seadmed. Need virtuaalsed seadmed suhtlevad nagu opsüsteemi tegelikud failid. Selliste virtuaalsete seadmete töö sarnaneb päris seadmetega; neid kasutatakse andmete kirjutamiseks ja lugemiseks. Peamine erinevus nende kahe vahel on see, et virtuaalsete seadmete andmed tarnib operatsioonisüsteem.







/dev/null on nullseade - eriline virtuaalseadme tüüp. See on olemas igas Linuxi süsteemis ja selle seadme eesmärk on visata sinna saadetud kõik välja ja lugeda faili lõpp (EOF). Enamikku virtuaalseadmeid kasutatakse andmete lugemiseks; /dev /null on aga ainulaadne, kuna seda kasutatakse sinna kirjutatud andmete summutamiseks. Lihtsamalt öeldes toimib see musta aukuna mis tahes andmetele, mis on talle Linuxi opsüsteemides kirjutatud.



Nüüd vaatame käsu 2> /dev /null ülejäänud osi



Faili kirjeldus - „2”

Iga käsu täitmine Linuxis genereerib kolm seotud faili: standardsisend, standardväljund ja standardveafailid. Linuxi operatsioonisüsteem viitab igale neist failidest unikaalse mitte-negatiivse täisarvuga.





  • '0' standardsisendi jaoks
  • '1' standardväljundi jaoks
  • '2' standardvea korral

Standardisisendi, standardväljundi ja standardvea voogude tehnilised terminid on vastavalt stdin, stdout ja stderr.

Me teame, et arv „2” käsus „2>/dev/null” viitab standardveale (stderr).



Faili ümbersuunamise operaator - '>'

Sümbolit „>” tuntakse faili ümbersuunamise operaatorina. Selle eesmärk on suunata vasakpoolne parempoolsele käsule. Lihtsamalt öeldes suunatakse vasakule jääv andmeside operaatori paremale küljele.

Siiani oleme mõistnud käsu 2>/dev/null iga komponendi taga olevat eesmärki. See saadab vea voo aadressile /dev /null, kes selle tühistab. Teisisõnu kasutatakse seda käsku veaväljundite kõrvaldamiseks ja summutamiseks. Kui olete aga kogenud Linuxi veteran, saate faili /dev /null sisu vaadata, käivitades terminalis järgmise käsu:

$ls -neid /arendaja/null

Seda käsku kasutatakse tavaliselt stsenaariumides, kus peame filtreerima väljundi vigade põhjal või kui tahame ekslike kirjeldustega seotud väljundi ära visata. Edaspidi vaatame näiteid selle kasutamise kohta Ubuntu süsteemis.

Kasutades 2>/dev/null

Kuna me teame, et käsku 2>/dev/null kasutatakse vigade kõrvaldamiseks, kasutatakse seda alati koos teiste käskudega. Sarnast lähenemist näeme järgmistes näidetes. Terminali saate avada, avades selle rakenduste menüü kaudu või kasutades kiirklahvi Ctrl + Alt + T.

Esimeses näites otsime kataloogist / sys / juhuslikku stringi (antud juhul helloworld). Otsimise käsk on grep ja selle argument on otsingustring. Stringi otsimiseks sisestage järgmine käsk.

$haaret -rTere, Maailm/sys/

See otsingukäsk kuvab kindlasti palju vigu, kuna seda kasutatakse ilma juurjuurdepääsuta. Saadame selle veavoo aadressile/dev/null, kasutades nende vigade kõrvaldamiseks käsku 2>/dev/null.

$haaret -rTere, Maailm/sys/ 2> /arendaja/null

Näeme, et käsu väljund on palju korralikum ja lihtsam kui viimane. Põhjus on selles, et vead kõrvaldatakse, kasutades 2> /dev /null ja kuna käsk grep ei suutnud leida ühtegi faili, mis sobiks meie stringiga „helloworld”, ei näita see väljundit.

/Dev /null kasutamise paremaks mõistmiseks vaatame järgmist näidet mis tahes veebisaidi (meie puhul google.com) pingutamise kohta. Saate google.com -i pingida, täites järgmise käsu:

$pingGoogle com

Kui soovime välistada kõik ebaõnnestunud pingid, saame kasutada käsku 2>/dev/null:

$pingGoogle com2> /arendaja/null

Sel juhul saadetakse standardne tõrjevoog (mis näitab ebaõnnestunud pingeid saidile google.com) virtuaalsele seadmele /dev /null, mis need ära viskab.

Kui aga soovime näha ainult ebaõnnestunud pingeid, saame täita järgmise käsu:

$pingGoogle com1> /arendaja/null

Siin saadame standardse väljundvoo (stdout) seadmele /dev /null, mis selle ära viskab. Järelikult jäävad meile ainult pingid, mis ei jõudnud google.com serverisse. Kuid meie puhul puudusid ebaõnnestunud pingid. Samuti saame suunata stdout ja stderr erinevatesse kohtadesse. See on kasulik, kui tahame väljundi ära visata ja vead logisse salvestada või vastupidi. Ebaõnnestunud pingide salvestamiseks vealogisse saate käsu ping standardväljundist loobudes käivitada järgmise käsu:

$pingGoogle com1> /arendaja/null2>error.log

Mõnikord võite soovida summutada käsu kõik väljundid (sealhulgas standardväljund ja standardvead). Selle saavutame, kasutades seadet /dev /null veidi erineval viisil. Kogu väljundi summutamiseks võite sisestada järgmise käsu:

$pingGoogle com> /arendaja/null2> &1

Pange tähele, et käskude järjekord on siin väga oluline. Pärast ping -käsu täitmist käsib ‘>/dev/null’ süsteemil väljundi maha suruda ja ‘2> & 1’ suunab standardvea voo standardväljundisse. Sel viisil tühistatakse kogu käsu väljund.

Järeldus

Oleme selles artiklis lahutanud käsu 2>/dev/null ja lihtsaid näiteid ning loodetavasti saate nüüd aru, mida iga bitti teeb. See on aga vaid jäämäe tipp; null -seadmeid kasutatakse bash -programmeerimisel mitmel viisil. Mõned täpsemad kasutusalad hõlmavad failide olemasolu kontrollimist, paketipaigalduste automatiseerimist ja skriptide vältimist soovimatuteks eranditeks.