Kaj je / dev / null in kako vam lahko pomaga?

Č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.

To je prispevek Daniela Duranteja, ki je tako postal eden izmed zmagovalcev našega tedenskega tekmovanja: «Povejte, kaj veste o Linuxu«. Čestitam Daniel!

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.


8 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Guido Ignacij Ignacij je dejal

    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!

    1.    Eduardo H. je dejal

      Ravno razlago je iskal.
      Podpiram predlog za dodajanje =)

      Saludos!

  2.   Paul je dejal

    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!

  3.   Paul je dejal

    Lep članek o dev / null, škoda, mislim, da sem prej pomotoma komentiral na napačnem mestu! se opravičujem

  4.   anonimni je dejal

    hvala dober prispevek

  5.   dresi je dejal

    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

  6.   Sofia martinez je dejal

    Kaj se zgodi, če pri izvrševanju stavka simbol> ni postavljen?

    Bi me lahko prosim kdo vodil?

  7.   Nil je dejal

    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.