Mis on /dev /null ja kuidas seda kasutada

What Is Dev Null How Use It

Linux on huvitav operatsioonisüsteem, mis majutab mõnda virtuaalset seadet mitmel otstarbel. Mis puutub süsteemis töötavatesse programmidesse, siis need virtuaalsed seadmed toimivad nagu päris failid. Tööriistad saavad nendest allikatest andmeid küsida ja toita. Andmed genereerib OS selle asemel, et neid kettalt lugeda.

Üks selline näide on /dev /null. See on eriline fail, mis on olemas igas Linuxi süsteemis. Kuid erinevalt enamikust teistest virtuaalsetest failidest kasutatakse seda lugemise asemel kirjutamiseks. Kõik, mida kirjutate aadressile /dev /null, visatakse ära ja unustatakse tühjusesse. Seda tuntakse UNIX -süsteemi nullseadmena.



Miks sa tahad midagi tühjusesse visata? Vaatame, mis on /dev /null ja selle kasutamine.



Eeldused

Enne kui sukeldume sügavalt /dev /null kasutamisse, peame sellest selgelt aru saama stdout ja stderr andmevoog. Vaadake seda põhjalik juhend edasi stdin , stderr ja stdout .



Värskendame kiiresti. Iga käsurea utiliidi käivitamisel genereerib see kaks väljundit. Väljund läheb stdout ja viga (kui see tekib) läheb stderr . Vaikimisi on mõlemad need andmevoogud terminaliga seotud.

Näiteks prindib järgmine käsk topelt jutumärgis oleva stringi. Siin salvestatakse väljund stdout .

$viskas väljaTere, Maailm



Järgmine käsk näitab meile varem käivitatud käsu väljumise olekut.

$viskas välja $?

Kuna eelmine käsk õnnestus, on väljumise olek 0. Vastasel juhul on väljumise olek erinev. Mis juhtub, kui proovite käivitada sobimatut käsku?

$ adfadsf
$viskas välja $?

Nüüd peame teadma failide kirjeldust. UNIX -i ökosüsteemis on need failile määratud täisarvulised väärtused. Mõlemad stdout (faili kirjeldus = 1) ja stderr (failikirjutaja = 2) omab kindlat failikirjeldust. Kasutades failide deskriptorit (selles olukorras 1 ja 2), saame faili ümber suunata stdout ja stderr teistele failidele.

Alustuseks suunab järgmine näide stdout kajast tekstifaili. Siin ei täpsustanud me faili kirjeldust. Kui pole määratud, kasutab bash stdout vaikimisi.

$viskas väljaTere, Maailm>log.txt

Järgmine käsk suunab stderr tekstifailile.

$asdfadsa2>error.txt

Kasutades /dev /null

Väljundi ümbersuunamine kataloogi /dev /null

Nüüd oleme valmis õppima, kuidas kasutada /dev /null. Kõigepealt vaatame, kuidas tavalist väljundit ja vigu filtreerida. Järgmises käsus proovib grep otsida stringi (sel juhul tere) kataloogist /sys.

$haaret -rTere/sys/

Kuid see tekitab palju vigu, kuna ilma juureõigusteta ei pääse grep paljudele failidele juurde. Sellisel juhul toob see kaasa loa keelatud vead. Nüüd, kasutades ümbersuunamist, saame selgema väljundi.

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

Väljund tundub palju parem, eks? Mitte midagi! Sel juhul pole grepil juurdepääsu paljudele failidele ja juurdepääsetavatel pole stringi tere.

Järgmises näites esitame Google'ile pinget.

$pingGoogle com

Kuid me ei taha näha kõiki neid edukaid pingitulemusi. Selle asemel tahame keskenduda ainult vigadele, kui ping ei suutnud Google'ile jõuda. Kuidas me seda teeme?

$pingGoogle com1> /arendaja/null

Siin on sisu stdout kaetakse /dev /null, jättes ainult vead.

Suunake kogu väljund kausta /dev /null

Teatud olukordades ei pruugi väljund olla üldse kasulik. Ümbersuunamise abil saame kogu väljundi tühjusesse tühjendada.

$haaret -rTere/sys/ > /arendaja/null2> &1

Murrame seda käsku natuke. Esiteks viskame kõik maha stdout aadressile /dev /null. Siis ütleme teises osas bashile, et ta saadaks stderr et stdout . Selles näites pole midagi väljastada. Kui aga olete segaduses, saate alati kontrollida, kas käsk õnnestus.

$viskas välja $?

Väärtus on 2, kuna käsk tekitas palju vigu.

Kui kipute unustama faili kirjelduse stdout ja stderr , järgmine käsk sobib suurepäraselt. See on eelmise käsu üldisem vorming. Mõlemad stdout ja stderr suunatakse kausta /dev /null.

$haaret -rTere/sys/ &> /arendaja/null

Muud näited

See on huvitav. Mäletate dd tööriista? See on võimas tööriist failide teisendamiseks ja kopeerimiseks. Lisateave dd kohta. Dd abil saame testida teie ketta järjestikust lugemiskiirust. Muidugi pole see täpne mõõtmine. Kiirtesti jaoks on see aga üsna kasulik.

$dd kui=<suur_fail> kohta=/arendaja/nullstaatus= edusammudbs= 1 miljoniflag= otsene

Siin olen suure failina kasutanud Ubuntu 18.04.4 ISO.

Samamoodi saate proovida ka oma Interneti -ühenduse allalaadimiskiirust.

$wget -VÕI /arendaja/null<suur_faililink>

Lõplikud mõtted

Loodetavasti on teil selge arusaam sellest, mis see /dev /null fail on. See on eriline seade, mis sellele kirjutatuna loobub ja kui seda loetakse, loeb see tühjaks. Selle huvitava funktsiooni tõeline potentsiaal on huvitavatel bash -skriptidel.

Kas olete huvitatud bash -skriptidest? Vaadake välja bash -skriptimise algajate juhend .

Nautige!