Kas yra /dev /null ir kaip jį naudoti

What Is Dev Null How Use It



„Linux“ yra įdomi operacinė sistema, kurioje yra keletas virtualių įrenginių įvairiems tikslams. Kalbant apie sistemoje veikiančias programas, šie virtualūs įrenginiai veikia taip, tarsi jie būtų tikri failai. Įrankiai gali prašyti ir tiekti duomenis iš šių šaltinių. Duomenis generuoja OS, o ne skaito juos iš disko.

Vienas iš tokių pavyzdžių yra /dev /null. Tai ypatingas failas, esantis kiekvienoje „Linux“ sistemoje. Tačiau, skirtingai nei dauguma kitų virtualių failų, vietoj skaitymo jis naudojamas rašyti. Viskas, ką rašysite /dev /null, bus atmesta, pamiršta į tuštumą. Jis žinomas kaip nulinis įrenginys UNIX sistemoje.







Kodėl norite kažką išmesti į tuštumą? Pažiūrėkime, kas yra /dev /null ir kaip jis naudojamas.



Būtinos sąlygos

Prieš gilindamiesi į /dev /null vartojimą, turime aiškiai suprasti stdout ir stderr duomenų srautas. Patikrinkite tai išsamų vadovą stdin , stderr , ir stdout .



Greitai atnaujinkime. Kai paleista bet kuri komandinės eilutės priemonė, ji sukuria du išėjimus. Išvestis eina į stdout ir klaida (jei sugeneruota) eina į stderr . Pagal numatytuosius nustatymus abu šie duomenų srautai yra susieti su terminalu.





Pavyzdžiui, ši komanda išspausdins eilutę, esančią dvigubose kabutėse. Čia išvestis saugoma stdout .

$išmetėLabas pasauli



Kita komanda parodys mums anksčiau paleistos komandos išėjimo būseną.

$išmetė $?

Kadangi ankstesnė komanda buvo sėkmingai paleista, išėjimo būsena yra 0. Priešingu atveju išėjimo būsena bus kitokia. Kas atsitinka, kai bandote paleisti netinkamą komandą?

$ adfadsf
$išmetė $?

Dabar turime žinoti apie failo aprašą. UNIX ekosistemoje tai yra sveikų skaičių reikšmės, priskirtos failui. Abu stdout (failo aprašas = 1) ir stderr (failo aprašas = 2) turi konkretų failo aprašą. Naudodami failo deskriptorių (šioje situacijoje 1 ir 2) galime nukreipti stdout ir stderr į kitus failus.

Pradedantiesiems šis pavyzdys nukreipia stdout echo komandos į teksto failą. Čia mes nenurodėme failo aprašo. Jei nenurodyta, bus naudojama „bash“ stdout pagal nutylėjimą.

$išmetėLabas pasauli>log.txt

Ši komanda nukreipia stderr į teksto failą.

$asdfadsa2>error.txt

Naudojant /dev /null

Išvestis nukreipiama į /dev /null

Dabar esame pasirengę išmokti naudoti /dev /null. Pirmiausia patikrinkime, kaip filtruoti įprastą išvestį ir klaidas. Šioje komandoje „grep“ bandys ieškoti eilutės (sveiki, šiuo atveju) kataloge /sys.

$suimti -rSveiki/sys/

Tačiau tai sukels daug klaidų, nes be root teisių grep negali pasiekti daugybės failų. Tokiu atveju leidimas bus atmestas. Dabar, naudodami peradresavimą, galime gauti aiškesnę išvestį.

$suimti -rSveiki/sys/ 2> /dev/nulis

Rezultatas atrodo daug geriau, tiesa? Nieko! Šiuo atveju „grep“ neturi prieigos prie daugybės failų, o tie, kurie yra prieinami, neturi eilutės „labas“.

Šiame pavyzdyje mes įtrauksime „Google“.

$pingGoogle com

Tačiau mes nenorime matyti visų tų sėkmingų ping rezultatų. Vietoj to norime sutelkti dėmesį tik į klaidas, kai „ping“ nepavyko pasiekti „Google“. Kaip mes tai darome?

$pingGoogle com1> /dev/nulis

Čia, turinys stdout yra išmetami į /dev /null, paliekant tik klaidas.

Peradresuokite visą išvestį į /dev /null

Tam tikrose situacijose išvestis gali būti visai nenaudinga. Naudodami peradresavimą, galime išmesti visą produkciją į tuštumą.

$suimti -rSveiki/sys/ > /dev/nulis2> &1

Šiek tiek sulaužykime šią komandą. Pirma, mes išmetame visus stdout į /dev /null. Tada antroje dalyje sakome bash, kad atsiųstų stderr į stdout . Šiame pavyzdyje nėra ko išleisti. Tačiau jei esate supainioti, visada galite patikrinti, ar komanda sėkmingai paleista.

$išmetė $?

Vertė yra 2, nes komanda sukėlė daug klaidų.

Jei esate linkęs pamiršti failo aprašą stdout ir stderr , toliau nurodyta komanda puikiai tiks. Tai labiau apibendrintas ankstesnės komandos formatas. Abu stdout ir stderr bus peradresuota į /dev /null.

$suimti -rSveiki/sys/ &> /dev/nulis

Kiti pavyzdžiai

Tai įdomus dalykas. Prisimeni dd įrankį? Tai galingas įrankis failams konvertuoti ir kopijuoti. Sužinokite daugiau apie dd. Naudodami dd, galime patikrinti nuoseklų jūsų disko skaitymo greitį. Žinoma, tai nėra tikslus matavimas. Tačiau greitam bandymui tai gana naudinga.

$dd jei=<didelis_failas> apie=/dev/nulisbūsena= pažangabs= 1 mlniflag= tiesioginis

Čia kaip didelį failą naudojau „Ubuntu 18.04.4 ISO“.

Taip pat galite išbandyti savo interneto ryšio atsisiuntimo greitį.

$wget -ARBA /dev/nulis<big_file_link>

Galutinės mintys

Tikimės, kad jūs aiškiai suprantate, kas yra šis /dev /null failas. Tai ypatingas prietaisas, kuris, jei į jį parašyta, išmeta ir, jei skaito iš jo, nuskaito nulį. Tikrasis šios įdomios funkcijos potencialas yra įdomiuose „bash“ scenarijuose.

Ar jus domina „bash“ scenarijai? Patikrinkite pradedančiųjų „bash“ scenarijų vadovas .

Mėgautis!