Mikä on /dev /null ja miten sitä käytetään

What Is Dev Null How Use It

Linux on mielenkiintoinen käyttöjärjestelmä, joka isännöi joitain virtuaalilaitteita moniin tarkoituksiin. Mitä tulee järjestelmässä käynnissä oleviin ohjelmiin, nämä virtuaalilaitteet toimivat kuin ne olisivat todellisia tiedostoja. Työkalut voivat pyytää ja syöttää tietoja näistä lähteistä. Tiedot generoi käyttöjärjestelmä sen sijaan, että ne lukisivat niitä levyltä.

Yksi esimerkki on /dev /null. Se on erityinen tiedosto, joka on läsnä jokaisessa Linux -järjestelmässä. Toisin kuin useimmat muut virtuaalitiedostot, sitä käytetään kuitenkin lukemisen sijaan kirjoittamiseen. Kaikki mitä kirjoitat /dev /nullille, hylätään ja unohdetaan tyhjäksi. Se tunnetaan UNIX -järjestelmän nollalaitteena.



Miksi haluat heittää jotain tyhjyyteen? Katsotaanpa mitä /dev /null on ja miten sitä käytetään.



Edellytykset

Ennen kuin sukellamme syvälle /dev /nullin käyttöön, meillä on oltava selkeä käsitys siitä stdout ja stderr datavirta. Katso tämä syvällinen opas stdin , stderr ja stdout .



Päivitetään nopeasti. Aina kun jokin komentorivityökalu suoritetaan, se tuottaa kaksi lähtöä. Lähtö menee kohteeseen stdout ja virhe (jos se syntyy) menee stderr . Oletuksena molemmat nämä tietovirrat on liitetty päätelaitteeseen.

Esimerkiksi seuraava komento tulostaa lainausmerkin sisällä olevan merkkijonon. Tässä lähtö tallennetaan stdout .

$heitti poisHei maailma



Seuraava komento näyttää meille aiemmin suoritetun komennon poistumistilan.

$heitti pois $?

Koska edellinen komento suoritettiin onnistuneesti, poistumistila on 0. Muussa tapauksessa poistumistila on erilainen. Mitä tapahtuu, kun yrität suorittaa virheellisen komennon?

$ adfadsf
$heitti pois $?

Nyt meidän on tiedettävä tiedoston kuvaaja. UNIX -ekosysteemissä nämä ovat tiedostoon määritettyjä kokonaislukuarvoja. Molemmat stdout (tiedoston kuvaaja = 1) ja stderr (tiedoston kuvaaja = 2) on erityinen tiedostonkuvaaja. Käyttämällä tiedoston kuvaajaa (1 ja 2 tässä tilanteessa) voimme ohjata stdout ja stderr muihin tiedostoihin.

Ensinnäkin seuraava esimerkki ohjaa stdout echo -komennosta tekstitiedostoon. Tässä emme määrittäneet tiedoston kuvaajaa. Jos sitä ei ole määritetty, bash käyttää stdout oletuksena.

$heitti poisHei maailma>log.txt

Seuraava komento ohjaa stderr tekstitiedostoon.

$asdfadsa2>error.txt

Käyttämällä /dev /null

Lähdettä ohjataan kohteeseen /dev /null

Nyt olemme valmiita oppimaan käyttämään /dev /null. Katsotaan ensin, miten suodatetaan normaali lähtö ja virhe. Seuraavassa komennossa grep yrittää etsiä merkkijonoa (hei, tässä tapauksessa) /sys -hakemistosta.

$pito -rHei/sys/

Se tuottaa kuitenkin paljon virheitä, koska ilman pääkäyttäjän oikeutta grep ei voi käyttää useita tiedostoja. Tällöin luvan epäämisvirheet. Nyt, käyttämällä uudelleenohjausta, voimme saada selkeämmän tuloksen.

$pito -rHei/sys/ 2> /dev/tyhjä

Tulos näyttää paljon paremmalta, eikö? Ei mitään! Tässä tapauksessa grepillä ei ole pääsyä moniin tiedostoihin, ja käytettävissä olevilla ei ole merkkijonoa hei.

Seuraavassa esimerkissä pingotamme Googlea.

$pingGoogle com

Emme kuitenkaan halua nähdä kaikkia onnistuneita ping -tuloksia. Sen sijaan haluamme keskittyä vain virheisiin, kun ping ei voinut tavoittaa Googlea. Kuinka teemme sen?

$pingGoogle com1> /dev/tyhjä

Tässä sisältö stdout poistetaan tiedostosta /dev /null, jättäen vain virheet.

Ohjaa kaikki tuotos /dev /null

Tietyissä tilanteissa tulostuksesta ei ehkä ole lainkaan hyötyä. Uudelleenohjauksen avulla voimme tyhjentää kaiken tuotos tyhjyyteen.

$pito -rHei/sys/ > /dev/tyhjä2> &1

Rikkokaamme tätä käskyä hieman. Ensinnäkin me kaadamme kaikki stdout kohteeseen /dev /null. Sitten toisessa osassa käskemme bashia lähettämään stderr kohteeseen stdout . Tässä esimerkissä ei ole mitään tulostettavaa. Jos olet kuitenkin hämmentynyt, voit aina tarkistaa, suoritettiinko komento onnistuneesti.

$heitti pois $?

Arvo on 2, koska komento on tuottanut paljon virheitä.

Jos sinulla on taipumus unohtaa tiedoston kuvaaja stdout ja stderr , seuraava komento toimii hienosti. Se on edellisen komennon yleisempi muoto. Molemmat stdout ja stderr ohjataan kohteeseen /dev /null.

$pito -rHei/sys/ &> /dev/tyhjä

Muita esimerkkejä

Tämä on mielenkiintoinen. Muistatko dd -työkalun? Se on tehokas työkalu tiedostojen muuntamiseen ja kopiointiin. Lisätietoja dd: stä. Dd: n avulla voimme testata levyn peräkkäisen lukunopeuden. Se ei tietenkään ole tarkka mittaus. Pikatestissä se on kuitenkin melko hyödyllinen.

$dd jos=<iso_tiedosto> /=/dev/tyhjäTila= edistystäbs= 1 miljiflag= suora

Tässä olen käyttänyt Ubuntu 18.04.4 ISO: ta isona tiedostona.

Samoin voit myös testata Internet -yhteyden latausnopeuden.

$wget -TAI /dev/tyhjä<iso_tiedosto_linkki>

Lopulliset ajatukset

Toivottavasti sinulla on selkeä käsitys siitä, mitä tämä /dev /null -tiedosto on. Se on erityinen laite, joka, jos siihen kirjoitetaan, hylkää ja jos siitä luetaan, se lukee nollaa. Tämän mielenkiintoisen ominaisuuden todellinen potentiaali on mielenkiintoisissa bash -skripteissä.

Oletko kiinnostunut bash -käsikirjoituksesta? Tarkista aloittelijan opas bash -komentosarjoihin .

Nauttia!