File Management

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

Mikä on / dev / null ja miten sitä käytetään
Linux on mielenkiintoinen käyttöjärjestelmä, joka isännöi joitain virtuaalilaitteita moniin tarkoituksiin. Mitä tulee järjestelmässä toimiviin ohjelmiin, nämä virtuaalilaitteet toimivat ikään kuin ne olisivat todellisia tiedostoja. Työkalut voivat pyytää ja syöttää tietoja näistä lähteistä. Tiedot luodaan käyttöjärjestelmästä sen sijaan, että lukisit ne levyltä.

Yksi tällainen esimerkki on / dev / null. Se on erityinen tiedosto, jota on jokaisessa Linux-järjestelmässä. Toisin kuin useimmat muut virtuaalitiedostot, lukemisen sijaan sitä käytetään kuitenkin kirjoittamiseen. Mitä tahansa kirjoitat osoitteeseen / dev / null, se hylätään, unohdetaan tyhjyyteen. Se tunnetaan nolla-laitteena UNIX-järjestelmässä.

Miksi haluat hylätä jotain tyhjyyteen? Katsotaanpa mikä / dev / null on ja sen käyttö.

Edellytykset

Ennen kuin sukeltaa syvälle / dev / null -käyttöön, meillä on oltava selkeä käsitys stdout ja stderr tietovirta. Katso tämä perusteellinen opas stdin, stderr, ja stdout.

Päivitetään nopeasti. Aina kun komentorivin apuohjelma suoritetaan, se tuottaa kaksi lähtöä. Tulos menee stdout ja virhe (jos se syntyy) menee stderr. Oletuksena molemmat nämä datavirrat on liitetty päätelaitteeseen.

Esimerkiksi seuraava komento tulostaa merkkijonon lainausmerkissä. Täällä lähtö tallennetaan stdout.

$ kaiku "Hei maailma"

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

$ kaiku $?

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

$ adfadsf
$ kaiku $?

Nyt meidän on tiedettävä tiedostokuvaaja. UNIX-ekosysteemissä nämä ovat tiedostolle määritettyjä kokonaislukuja. Molemmat stdout (tiedostokuva = 1) ja stderr (tiedostokuvaaja = 2) on erityinen tiedostokuvaaja. Tiedostokuvaajan (tässä tilanteessa 1 ja 2) avulla voimme ohjata stdout ja stderr muihin tiedostoihin.

Ensinnäkin seuraava esimerkki ohjaa stdout kaiku-komennon tekstitiedostoon. Täällä emme määrittäneet tiedoston kuvaajaa. Jos sitä ei ole määritelty, bash käyttää stdout oletuksena.

$ echo “Hello World”> loki.txt

Seuraava komento ohjaa stderr tekstitiedostoon.

$ asdfadsa 2> virhe.txt

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

Uudelleenohjataan lähtö / dev / null

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

$ grep -r hei / sys /

Se tuottaa kuitenkin paljon virheitä, koska ilman root-oikeuksia grep ei voi käyttää useita tiedostoja. Tällöin se johtaa virheisiin "Lupa evätty". Nyt uudelleenohjausta käyttämällä voimme saada selkeämmän tuloksen.

$ grep -r hei / sys / 2> / dev / null

Tulos näyttää paljon paremmalta? Ei mitään! Tällöin grepillä ei ole pääsyä moniin tiedostoihin eikä käytettävissä oleviin tiedostoihin merkkijono "hei".

Seuraavassa esimerkissä pingataan Googleen.

$ ping google.com

Emme kuitenkaan halua nähdä kaikkia onnistuneita ping-tuloksia. Sen sijaan haluamme keskittyä virheisiin vain, kun ping ei päässyt Googleen. Kuinka me teemme sen?

$ ping google.com 1> / dev / null

Tässä sisältö stdout pudotetaan kansioon / dev / null jättäen vain virheet.

Ohjaa kaikki lähdöt kohtaan / dev / null

Tietyissä tilanteissa lähtö ei välttämättä ole hyödyllinen. Uudelleenohjauksen avulla voimme viedä koko tuotoksen tyhjään tilaan.

$ grep -r hei / sys /> / dev / null 2> & 1

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

$ kaiku $?

Arvo on 2, koska komento aiheutti paljon virheitä.

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

$ grep -r hei / sys / &> / dev / null

Muita esimerkkejä

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

$ dd jos = = / dev / null tila = edistyminen bs = 1M iflag = suora

Tässä olen käyttänyt Ubuntu 18: ta.04.4 ISO iso tiedosto.

Vastaavasti voit myös testata Internet-yhteyden latausnopeutta.

$ wget -O / dev / null

Lopulliset ajatukset

Toivottavasti sinulla on selkeä käsitys siitä, mikä tämä / dev / null-tiedosto on. Se on erityinen laite, joka hylätään, jos siihen kirjoitetaan, lukee tyhjä. Tämän mielenkiintoisen ominaisuuden todellinen potentiaali on mielenkiintoisissa bash-skripteissä.

Kiinnostaako sinua bash-komentosarjat? Tutustu bash-komentosarjojen aloittelijan oppaaseen.

Nauttia!

Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...