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!