Kaj je /dev /null in kako ga uporabljati

What Is Dev Null How Use It



Linux je zanimiv operacijski sistem, ki gosti nekatere navidezne naprave za številne namene. Kar zadeva programe, ki se izvajajo v sistemu, te virtualne naprave delujejo, kot da so resnične datoteke. Orodja lahko zahtevajo in posredujejo podatke iz teh virov. Podatke ustvari OS, namesto da jih bere z diska.

En tak primer je /dev /null. To je posebna datoteka, ki je prisotna v vsakem sistemu Linux. Vendar se za razliko od večine drugih virtualnih datotek namesto za branje uporablja za pisanje. Karkoli napišete /dev /null, bo zavrženo in pozabljeno v prazno. V sistemu UNIX je znana kot ničelna naprava.







Zakaj bi želeli nekaj zavreči v prazno? Preverimo, kaj je /dev /null in njegova uporaba.



Predpogoji

Preden se poglobimo v uporabo /dev /null, moramo jasno razumeti stdout in stderr podatkovni tok. Preverite to poglobljen vodnik naprej stdin , stderr , in stdout .



Hitro se osvežimo. Kadar koli zaženete kateri koli pripomoček ukazne vrstice, ustvari dva izhoda. Izhod gre na stdout in napaka (če je ustvarjena) gre na stderr . Privzeto sta oba toka podatkov povezana s terminalom.





Na primer, naslednji ukaz bo natisnil niz v dvojnem narekovaju. Tu je izhod shranjen v stdout .

$vrgel venPozdravljen, svet



Naslednji ukaz nam bo pokazal stanje izhoda predhodno izvedenega ukaza.

$vrgel ven $?

Ker je prejšnji ukaz uspešno tekel, je stanje izhoda 0. V nasprotnem primeru bo stanje izhoda drugačno. Kaj se zgodi, ko poskusite zagnati neveljaven ukaz?

$ adfadsf
$vrgel ven $?

Zdaj moramo vedeti o deskriptorju datotek. V ekosistemu UNIX so to celoštevilske vrednosti, dodeljene datoteki. Oboje stdout (deskriptor datoteke = 1) in stderr (opisnik datotek = 2) imajo poseben opisnik datotek. Z deskriptorjem datotek (v tem primeru 1 in 2) lahko preusmerimo datoteko stdout in stderr na druge datoteke.

Za začetek bo naslednji primer preusmeril datoteko stdout ukaza echo v besedilno datoteko. Tukaj nismo podali deskriptorja datotek. Če ni določeno, bo uporabil bash stdout privzeto.

$vrgel venPozdravljen, svet>log.txt

Naslednji ukaz bo preusmeril datoteko stderr v besedilno datoteko.

$asdfadsa2>error.txt

Uporaba /dev /null

Preusmeritev izhoda na /dev /null

Zdaj smo pripravljeni, da se naučimo uporabljati /dev /null. Najprej preverimo, kako filtrirati običajne izhode in napake. V naslednjem ukazu bo grep poskušal poiskati niz (v tem primeru zdravo) v imeniku /sys.

$oprijem -rzdravo/sys/

Vendar bo povzročilo veliko napak, saj brez korenskih pravic grep ne more dostopati do številnih datotek. V takem primeru bo prišlo do napak pri zavrnitvi dovoljenja. S pomočjo preusmeritve lahko dobimo jasnejši izhod.

$oprijem -rzdravo/sys/ 2> /dev/nič

Rezultat izgleda veliko bolje, kajne? Nič! V tem primeru grep nima dostopa do veliko datotek in tiste, ki so dostopne, nimajo niza hello.

V naslednjem primeru bomo pingali Google.

$pingGoogle com

Vendar ne želimo videti vseh teh uspešnih rezultatov pinga. Namesto tega se želimo osredotočiti le na napake, ko ping ne more doseči Googla. Kako to naredimo?

$pingGoogle com1> /dev/nič

Tukaj je vsebina stdout so dampirani v /dev /null, pri čemer ostanejo le napake.

Vse preusmerite na /dev /null

V nekaterih primerih izhod morda sploh ni uporaben. Z uporabo preusmeritve lahko izpustimo vse izhode v prazno.

$oprijem -rzdravo/sys/ > /dev/nič2> &1

Malce prekinimo ta ukaz. Najprej odvržemo vse stdout v /dev /null. Nato v drugem delu bashu rečemo, naj pošlje stderr do stdout . V tem primeru ni kaj izpisati. Če pa ste zmedeni, lahko vedno preverite, ali je ukaz uspešno zagnan.

$vrgel ven $?

Vrednost je 2, ker je ukaz ustvaril veliko napak.

Če ponavadi pozabite deskriptor datoteke datoteke stdout in stderr , naslednji ukaz bo v redu. To je bolj splošna oblika prejšnjega ukaza. Oboje stdout in stderr bo preusmerjen na /dev /null.

$oprijem -rzdravo/sys/ &> /dev/nič

Drugi primeri

To je zanimivo. Se spomnite orodja dd? To je močno orodje za pretvorbo in kopiranje datotek. Več o dd. S pomočjo dd lahko preizkusimo hitrost zaporednega branja vašega diska. Seveda to ni natančna meritev. Vendar je za hiter test zelo uporaben.

$dd če=<big_file> od=/dev/ničstanje= napredekbs= 1Miflag= neposredno

Tukaj sem kot veliko datoteko uporabil ISO Ubuntu 18.04.4.

Podobno lahko preizkusite tudi hitrost prenosa internetne povezave.

$wget -ALI /dev/nič<big_file_link>

Končne misli

Upajmo, da imate jasno razumevanje, kaj je ta /dev /null datoteka. To je posebna naprava, ki jo, če je zapisana, zavrže in če se bere, bere ničelno. Resnični potencial te zanimive funkcije je v zanimivih bash skriptah.

Vas zanima bash skript? Preveri vodnik za začetnike pri bash skriptiranju .

Uživajte!