Mikä on / dev / null ja miten se voi auttaa sinua?

Jos meillä on jo joitain käsitteitä GNU / Linux-hakemistopuusta, meidän pitäisi ainakin tuntea / dev / reference, joka on käytännössä missä kaikki tiedostot liittyvät laitteistot.

Jos katsomme hakemistoa / dev / näemme "tiedoston" nimeltä nolla, mutta jos haluamme avata sen nähdäksesi sen sisällön, järjestelmä kertoo meille, että se ei ole mahdollista, koska se ei ole tavallista sisältöä. Olen liittänyt sanatiedoston, koska kuten kaikki tiedät Linuxille, kaikki (laitteisto ja ohjelmisto) on esitetty tiedostona.

Tämä on Daniel Duranten panos, joten hänestä tulee yksi viikoittaisen kilpailumme voittajista: «Jaa mitä tiedät Linuxista«. Onnittelut Daniel!

Mitä laitetta / dev / null vastaa?

Kuvittele käytännön tarkoituksiin roskakori, pohjaton kuoppa tai avaruus, johon heittää mitään ilman mahdollisuutta palauttaa sitä (riippumatta siitä, kuinka kovasti NASA-kaverit yrittävät).

Mutta jos minulla on jo komentoja, kuten rm, miksi haluan jotain uutta, jonka poistan?

Koska molempien "mustien aukkojen" toiminta on täysin erilaista: kuinka ohittaisit komentotiedoston vakiotuloksen komentosarjassa komentosarjan komentosarjassa suorituksen aikana? Tässä tulee sisään / dev / null.

Katsotaanpa se esimerkin avulla.

Olemme luoneet testitiedoston, joka sisältää merkkijonon "Hello World". Jos haluamme edustaa kyseisen tiedoston sisältöä komentorivillä, voimme tehdä sen seuraavalla tavalla:

käyttäjä @ kannettava tietokone: ~ $ kissatesti
Hei maailma

Jos tiedostoa ei ole olemassa tai se on nimetty testiksi (jonka lopussa on s), saamme seuraavan virheen konsolissa:

käyttäjä @ kannettava tietokone: ~ $ kissatestit
cat: tests: Tiedostoa tai hakemistoa ei ole olemassa

Mitä voisimme tehdä välttääksemme virheilmoituksen? No, yksinkertaisesti ohjaa komennon lähtö virheiden sattuessa "roskakoriin", toisin sanoen / dev / null

Kuinka määritämme sen virheeksi? Tässä syötetään ohjelman vakiotulo-, lähtö- ja virhearvot: STDIN, STDOUT ja STDERR (jotka voidaan korvata vastaavasti 0, 1 ja 2). Tällä tavalla, jos laitamme ...

käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> / dev / null
käyttäjä @ kannettava tietokone: ~ $

… Näemme, että virheilmoitusta ei tuoteta konsolissa.

Sinun on oltava varovainen, koska syntakse on välttämätön: merkkien 2 ja> välillä ei saa olla tilaa. Muuten se antaisi seuraavan:

käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> / dev / null
cat: tests: Tiedostoa tai hakemistoa ei ole olemassa
cat: 2: Tiedostoa tai hakemistoa ei ole olemassa

Sitä vastoin väli> ja / dev / null välillä ei vaikuta negatiivisesti tulokseen.

Voisimme myös käyttää virheiden uudelleenohjausta esimerkiksi virheiden sieppaamiseen lokitiedostoon seuraavasti:

käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> err.log

Toinen mielenkiintoinen tapaus olisi tulosten kerääminen toiseen tiedostoon niin kauan kuin virheitä ei tapahdu, minkä vuoksi asetamme:

käyttäjä @ kannettava tietokone: ~ $ kissatesti 1> output_result 2> err.log

Lopuksi on mahdollista laittaa lauseke «> / dev / null 2> & 1», jossa vakiolähtö ja virhelähtö yhdistetään, ohjaamalla ne uudelleen siten, että tulosinformaatiota ei missään tapauksessa saada.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   Guido Ignatius Ignatius dijo

    Ah, mutta yksi käytetyimmistä / dev / null-apuohjelmista puuttuu, mikä tyhjentää tiedostot: $ cat / dev / null> file.log Tällä tavoin tiedosto.log-tiedosto on tyhjä. Lisää se!

    1.    Eduardo H. dijo

      Se oli juuri selitys, jota hän etsi.
      Tuen esitystä sen lisäämiseksi =)

      Saludos!

  2.   Pablo dijo

    Hei, ensinnäkin artikkeli on erittäin hyvä! toinen haluaisin antaa jotain tällä linkillä aiheesta cron-työ php: ssä Cpanelilta ja kolmas onnittelut blogista!

  3.   Pablo dijo

    Hieno artikkeli dev / nullista, mitä sääli luulen, että kommentoin virheellisesti väärässä paikassa aiemmin! Pahoittelen

  4.   anonyymi dijo

    kiitos hyvästä panoksesta

  5.   Pelipaidat dijo

    Terveisiä saan hyökkäyksen tyhjäksi. Käytän andrirciä ja saan yksityisen lempinimestäni sanalla Null. 2 sekuntia myöhemmin ohjelma sulkeutuu, olen lukenut, ja mielestäni tämän voi tehdä vain kuori, ei joku ulkopuolinen. Olen yrittänyt sivuuttaa itseni / sivuuttaa -lrpcntikd, eikä mikään yllätä minua, komento tulee jatkuvasti. Jos sinulla on tapa yrittää estää se, kiitän sitä. Kippis

  6.   Sofia martinez dijo

    Mitä tapahtuu, jos virkettä suoritettaessa symbolia> ei sijoiteta?

    Voisiko joku ohjata minua?

  7.   Nolla dijo

    Hyvää huomenta, olen asentanut Debian netinstin ACER Extensa 5620Z – 32-bittiseen versioon.. Kun asennus USB:ltä on valmis ja pendrive irrotettu niin että se käynnistyy kiintolevyltä (älä asenna uudelleen kynästä), mutta käynnistyksen yhteydessä järjestelmä hän kysyy minulta:
    debianin kirjautuminen: xxxxxxxx (ok)
    Salasana: xxxxxxxxx (ok)
    nil@debian:~$ ???? mikä tämä on? Mitä sinne pitäisi laittaa?

    Ilman tätä komentoa en voi jatkaa järjestelmän käynnistystä.
    Voitko auttaa minua? En tiedä miten minun pitäisi jatkaa.
    Kiitos paljon. Ystävällisin terveisin.