Upravljanje datotek

Kaj je / dev / null in kako ga uporabiti

Kaj je / dev / null in kako ga uporabiti
Linux je zanimiv operacijski sistem, ki gosti številne navidezne naprave za številne namene. Kar zadeva programe, ki se izvajajo v sistemu, se te virtualne naprave obnašajo kot da so resnične datoteke. Orodja lahko zahtevajo in hranijo podatke iz teh virov. Podatke ustvari OS, namesto da bi jih prebral z diska.

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

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

Pogoji

Preden se poglobimo v uporabo / dev / null, moramo jasno razumeti stdout in stderr podatkovni tok. Oglejte si ta poglobljeni vodnik naprej stdin, stderr, in stdout.

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

Na primer, naslednji ukaz bo natisnil niz z dvojnimi narekovaji. Tu je izhod shranjen v stdout.

$ echo "Hello World"

Naslednji ukaz nam bo pokazal stanje izhoda predhodno zagnanega ukaza.

$ echo $?

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

$ adfadsf
$ echo $?

Zdaj moramo vedeti o deskriptorju datoteke. V ekosistemu UNIX so to celoštevilčne vrednosti, dodeljene datoteki. Oboje stdout (deskriptor datoteke = 1) in stderr (deskriptor datoteke = 2) ima določen deskriptor datoteke. Z deskriptorjem datoteke (v tem primeru 1 in 2) lahko preusmerimo datoteko stdout in stderr v druge datoteke.

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

$ echo “Hello World”> log.txt

Naslednji ukaz bo preusmeril datoteko stderr v besedilno datoteko.

$ asdfadsa 2> napaka.txt

Uporaba / dev / null

Preusmeritev izhoda v / dev / null

Zdaj smo se pripravljeni naučiti, kako uporabljati / dev / null. Najprej preverimo, kako filtrirati običajni izhod in napake. V naslednjem ukazu bo grep poskusil poiskati niz (v tem primeru zdravo) v imeniku “/ sys”.

$ grep -r zdravo / sys /

Vendar bo povzročilo veliko napak, saj brez korenskega privilegija grep ne more dostopati do številnih datotek. V takem primeru bo prišlo do napak »Dovoljenje zavrnjeno«. Zdaj lahko s preusmeritvijo dobimo jasnejši izhod.

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

Izhod je videti veliko boljši, kajne? Nič! V tem primeru grep nima dostopa do veliko datotek, tiste, ki so dostopne, pa nimajo niza "zdravo".

V naslednjem primeru bomo pingali Google.

$ ping google.com

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

$ ping google.com 1> / dev / null

Tukaj je vsebina stdout se odvržejo v / dev / null, pri čemer ostanejo samo napake.

Ves izhod preusmerite v / dev / null

V nekaterih primerih izhod morda sploh ne bo koristen. Z uporabo preusmeritve lahko izpisujemo ves izhod v praznino.

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

Malo prekinimo ta ukaz. Najprej odvržemo vse stdout v / dev / null. Nato v drugem delu pravimo bashu, naj pošlje stderr do stdout. V tem primeru ni ničesar za izpis. Če ste zmedeni, lahko vedno preverite, ali se je ukaz uspešno zagnal.

$ echo $?

Vrednost je 2, ker je ukaz ustvaril veliko napak.

Če ponavadi pozabite deskriptor datoteke stdout in stderr, naslednji ukaz se bo dobro znašel. To je bolj splošen format prejšnjega ukaza. Oboje stdout in stderr bo preusmerjen na / dev / null.

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

Drugi primeri

To je zanimivo. Ne pozabite na orodje dd? Je močno orodje za pretvorbo in kopiranje datotek. Več o dd. Z uporabo dd lahko preizkusimo zaporedno hitrost branja vašega diska. Seveda to ni natančna meritev. Za hiter test pa je zelo koristen.

$ dd, če = of = / dev / null status = napredek bs = 1M iflag = direct

Tukaj sem uporabil Ubuntu 18.04.4 ISO kot velika datoteka.

Podobno lahko preizkusite tudi hitrost prenosa internetne povezave.

$ wget -O / dev / null

Zadnje misli

Upajmo, da jasno razumete, kaj je ta datoteka / dev / null. To je posebna naprava, ki jo, če ji piše, zavrže in če jo bere iz nje, prebere nič. Resnični potencial te zanimive funkcije je v zanimivih bash skriptih.

Vas zanima bash skript? Oglejte si začetniški vodnik za bash skript.

Uživajte!

Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...
Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...