Mis on / dev / null ja kuidas see teid aidata saab?

Kui meil on juba mõned mõisted GNU / Linuxi kataloogipuust, peaksime vähemalt tundma viidet / dev /, mis on tegelikult kõikides failides riistvaraseadmed.

Kui vaatame kataloogi / dev / näeme "faili" nimega tühjaks, kuid kui me tahame selle sisu avamiseks avada, ütleb süsteem meile, et see pole võimalik, kuna see pole tavaline sisu. Lisasin sõna fail, sest nagu te kõik Linuxi jaoks teate, on kõik (riistvara ja tarkvara) failina esindatud.

See on Daniel Durante panus, olles seega meie iganädalase võistluse võitja: «Jagage seda, mida teate Linuxi kohta«. Palju õnne Daniel!

Mis seadmele / dev / null vastab?

Kujutage praktilistel eesmärkidel ette prügikasti, põhjatut auku või maailmaruumi, kuhu midagi visata, ilma et oleks võimalik seda taastada (ükskõik kui palju NASA tüübid ka ei üritaks).

Aga kui mul on juba käske nagu rm, siis miks ma tahan midagi uut kustutada?

Sest see, kuidas mõlemad "mustad augud" töötavad, on täiesti erinev: kuidas saaksite käsu ajal shelliskriptis oleva käsu vea standardväljundi alistada? Siit tuleb / dev / null.

Vaatame seda ühe näitega.

Oleme loonud faili nimega testid, mis sisaldab stringi "Hello World". Kui tahame selle faili sisu käsureal esindada, võiksime seda teha järgmiselt:

kasutaja @ sülearvuti: ~ $ kassitest
Tere, Maailm

Kui faili ei eksisteerinud või see nimetati testideks (mille lõpus on s), kuvatakse konsoolis järgmine tõrge:

kasutaja @ sülearvuti: ~ $ kassitestid
cat: testid: Faili või kataloogi pole olemas

Mida saaksime teha veateate vältimiseks? Noh, lihtsalt suunake vea korral käsu väljund "prügikasti", see on / dev / null

Kuidas me täpsustame seda vea korral? Siin sisestate programmi standardse sisendi, väljundi ja vea väärtused: STDIN, STDOUT ja STDERR (mida saab asendada vastavalt 0, 1 ja 2). Sel moel, kui paneme ...

kasutaja @ sülearvuti: ~ $ cat testib 2> / dev / null
kasutaja @ sülearvuti: ~ $

... Näeme, et veateadet konsoolil ei koostata.

Peate olema ettevaatlik, sest süntaks on hädavajalik: märkide 2 ja> vahel ei tohiks olla tühikut. Vastasel juhul annaks see järgmise:

kasutaja @ sülearvuti: ~ $ cat testib 2> / dev / null
cat: testid: Faili või kataloogi pole olemas
cat: 2: faili või kataloogi pole olemas

Seevastu tühik> ja / dev / null vahel ei mõjuta tulemust negatiivselt.

Samuti võiksime tõrke ümbersuunamist kasutada näiteks logifaili vigade püüdmiseks järgmiselt:

kasutaja @ sülearvuti: ~ $ cat tests 2> err.log

Teine huvitav juhtum oleks tulemuste kogumine teise faili seni, kuni viga ei esine, mille jaoks me paneksime:

kasutaja @ sülearvuti: ~ $ cat test 1> output_result 2> err.log

Lõpuks tasub panna avaldus «> / dev / null 2> & 1», milles standardväljund ja veaväljund on ühendatud, suunates need ümber nii, et mingil juhul ei saada väljunditeavet.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Guido Ignatius Ignatius DIJO

    Ah, aga puudu on üks levinumaid / dev / null-i utiliite, mis tühjendab faile: $ cat / dev / null> file.log Sel viisil jääb fail fail.log tühjaks. Lisage see!

    1.    Eduardo H. DIJO

      See oli täpselt seletus, mida ta otsis.
      Toetan selle lisamise ettepanekut =)

      Saludos!

  2.   Pablo DIJO

    Tere, esiteks on artikkel väga hea! teine ​​tahaksin selle teema lingiga midagi kaasa aidata Croni töö PHP-s Cpanelilt ja kolmas õnnitlus blogi jaoks!

  3.   Pablo DIJO

    Tore artikkel dev / nullist, kui häbi ma arvan, et enne ekslikult vales kohas kommenteerisin! ma vabandan

  4.   anonüümne DIJO

    tänu hea panus

  5.   kampsunid DIJO

    Tervitused Mul on null rünnak. Kasutan andrirci ja saan oma hüüdnimest reaalajas sõna Null. 2 sekundit hiljem sulgeb programm, mida olen lugenud, ja minu arvates saab seda teha ainult Shell, mitte keegi väline. Olen proovinud ennast ignoreerida / ignoreerida -lrpcntikd ja Miski ei üllata mind, käsk tuleb pidevalt. Kui teil on mingil viisil võimalus seda blokeerida, oleksin tänulik. Terviseks

  6.   Sofia martinez DIJO

    Mis juhtub, kui lause täitmisel sümbolit> ei paigutata?

    Kas keegi võiks mind palun suunata?

  7.   Null DIJO

    Tere hommikust, olen installinud Debiani netinsti ACER Extensa 5620Z-sse – 32 bit. Kui USB-lt installimine on lõppenud ja pendrive on eemaldatud, nii et see käivitub kõvakettalt (ärge installige pliiatsist uuesti), kuid käivitamise hetkel süsteem küsib minult:
    debiani sisselogimine: xxxxxxxx (ok)
    Parool: xxxxxxxx (ok)
    nil@debian:~$ ???? mis see on? Mida ma peaksin sinna panema?

    Ilma selle käsuta ei saa ma süsteemi alglaadimisega jätkata.
    Kas sa saad mind aidata? Ma ei tea, kuidas peaksin jätkama.
    Tänan teid väga. Parimate soovidega.