Če že imamo nekaj pojmov drevesa imenikov GNU / Linux, bi morali biti vsaj seznanjeni z / dev / reference, ki je dejansko tam, kjer so vse datoteke, povezane z strojne naprave.
Če pogledamo v imenik / dev / videli bomo "datoteko" z imenom null, če pa jo želimo odpreti, da si ogledamo njeno vsebino, nam bo sistem povedal, da to ni mogoče, saj ni običajna vsebina. Priložil sem besedno datoteko, ker, kot vsi veste za Linux, je vse (strojna in programska oprema) predstavljeno kot datoteka. |
Kateri napravi ustreza / dev / null?
Za praktične namene si predstavljajte koš za smeti, jamo brez dna ali vesolje, kamor lahko vržete karkoli, ne da bi si ga lahko povrnili (ne glede na to, kako močno se trudijo fantje iz NASA-e).
Če pa že imam ukaze, kot je rm, zakaj želim izbrisati nekaj novega?
Ker je način delovanja obeh "črnih lukenj" popolnoma drugačen: kako bi lahko med izvajanjem preglasili standardni izpis napake v ukazu znotraj skripta lupine? Tu pride / dev / null.
Poglejmo s primerom.
Ustvarili smo datoteko, imenovano testi, ki vsebuje niz "Hello World". Če želimo predstaviti vsebino te datoteke v ukazni vrstici, lahko to storimo na naslednji način:
user @ laptop: ~ $ mačji test
Pozdravljen, svet
Če datoteka ne bi obstajala ali bi bila poimenovana kot testi (z znakom 'na koncu), bi v konzoli dobili naslednjo napako:
user @ laptop: ~ $ mačji testi
cat: tests: Datoteka ali imenik ne obstaja
Kaj lahko storimo, da se izognemo sporočilu o napaki? No, preprosto preusmerite izhod ukaza v primeru napake v "koš za smeti", to je na / dev / null
Kako določimo, da gre v primeru napake? Tu vnesete standardne vrednosti vnosa, izhoda in napak za program: STDIN, STDOUT in STDERR (ki jih lahko nadomestimo z 0, 1 in 2). Na ta način, če postavimo ...
user @ laptop: ~ $ mačka testira 2> / dev / null
uporabnik @ prenosnik: ~ $
… Videli bomo, da sporočilo o napaki ne bo prikazano na konzoli.
Paziti morate, ker je sintaksa bistvena: med znakoma 2 in> ne sme biti presledka. V nasprotnem primeru bi to dalo naslednje:
user @ laptop: ~ $ mačka testira 2> / dev / null
cat: tests: Datoteka ali imenik ne obstaja
cat: 2: Datoteka ali imenik ne obstaja
Nasprotno presledek med> in / dev / null ne bo negativno vplival na rezultat.
Preusmeritev napak lahko uporabimo tudi na primer za zajem napak v dnevniški datoteki, kot sledi:
user @ laptop: ~ $ mačka testira 2> err.log
Še en zanimiv primer bi bilo zbiranje rezultatov v drugi datoteki, če ne pride do napake, za katero bi postavili:
user @ laptop: ~ $ test mačke 1> rezultat_izida 2> napaka.log
Na koncu je vredno vnesti še izraz «> / dev / null 2> & 1», v katerem sta standardni izhod in izhod za napako združeni, preusmeriti jih tako, da v nobenem primeru ne dobimo izhodnih informacij.
Ah, manjka pa ena izmed najpogosteje uporabljenih pripomočkov, ki jo ima / dev / null, kar prazni datoteke: $ cat / dev / null> file.log Na ta način bo datoteka file.log prazna. Dodajte ga!
Ravno razlago je iskal.
Podpiram predlog za dodajanje =)
Saludos!
Pozdravljeni, najprej je članek zelo dober! drugi bi rad prispeval nekaj s to povezavo na to temo cron opravilo v php iz Cpanela in tretje čestitke za blog!
Lep članek o dev / null, škoda, mislim, da sem prej pomotoma komentiral na napačnem mestu! se opravičujem
hvala dober prispevek
Lep pozdrav imam ničelni napad. Uporabljam andrirc in dobim zasebnik iz svojega vzdevka z besedo Null. Dve sekundi kasneje se program zapre, kar sem bral, in po mojem mnenju to lahko stori samo Shell, ne pa tudi nekdo zunanji. Poskušal sem se ignorirati / prezreti -lrpcntikd in nič me ne preseneča, da ukaz nenehno prihaja. Če imate kakršen koli način, da ga poskusite blokirati, bi bil hvaležen. Na zdravje
Kaj se zgodi, če pri izvrševanju stavka simbol> ni postavljen?
Bi me lahko prosim kdo vodil?
Dobro jutro, namestil sem Debian netinst v ACER Extensa 5620Z – 32 bit. Ko je namestitev z USB-ja končana in je pogon odstranjen, tako da se zažene s trdega diska (ne ponovno nameščajte s pisala), ampak v trenutku zagona sistem me vpraša:
prijava v debian: xxxxxxxx (ok)
Geslo: xxxxxxxx (ok)
nil@debian:~$ ???? kaj je to? Kaj naj dam tja?
Brez tega ukaza ne morem nadaljevati z zagonom sistema.
Mi lahko pomagaš? Ne vem, kako naj nadaljujem.
Najlepša hvala. Prijazni pozdravi.