Kas yra / dev / null ir kaip tai gali jums padėti?

Jei jau turime keletą GNU / Linux katalogų medžio sąvokų, turėtume bent jau būti susipažinę su / dev / nuoroda, kuri yra veiksminga ten, kur visi failai, susiję su aparatūros įtaisai.

Jei pažvelgsime į katalogą / dev / pamatysime vadinamą „bylą“ null, bet jei norime jį atidaryti, kad pamatytume jo turinį, sistema mums pasakys, kad tai neįmanoma, nes tai nėra įprastas turinys. Pridedu žodį failas, nes, kaip jūs visi žinote apie „Linux“, viskas (aparatinė ir programinė įranga) vaizduojama kaip failas.

Tai yra Danielio Durante indėlis, todėl jis tapo vienu iš mūsų savaitinių varžybų nugalėtojų: «Pasidalykite tuo, ką žinote apie „Linux“«. Sveikiname Danielių!

Kokį įrenginį atitinka / dev / null?

Praktiniais tikslais įsivaizduokite šiukšliadėžę, dugno duobę ar kosminę erdvę, į kurią įmesite bet ką be galimybės ją susigrąžinti (kad ir kaip stengtųsi vaikinai iš NASA).

Bet jei jau turiu tokias komandas kaip rm, kodėl noriu ištrinti ką nors naujo?

Nes abiejų „juodųjų skylių“ veikimo būdas yra visiškai kitoks: kaip jūs vykdydami vykdymą praleistumėte standartinę komandos klaidos išvestį „shell“ scenarijuje? Čia yra / dev / null.

Pažiūrėkime tai su pavyzdžiu.

Mes sukūrėme failą, vadinamą testais, kuriame yra eilutė „Hello World“. Jei norime reprezentuoti to failo turinį komandinėje eilutėje, tai galėtume padaryti taip:

vartotojas @ nešiojamas kompiuteris: ~ $ katės testas
Labas pasauli

Jei failo nebūtų arba jis būtų pavadintas bandymais (su „s“ galu), konsolėje gausime šią klaidą:

vartotojas @ nešiojamas kompiuteris: ~ $ katės testai
katė: testai: Failo ar katalogo nėra

Ką galėtume padaryti, kad išvengtume klaidos pranešimo? Na, tiesiog peradresuokite komandos išvestį klaidos atveju į „šiukšliadėžę“, tai yra / dev / null

Kaip tai nurodyti klaidos atveju? Čia įvedate standartines programos įvesties, išvesties ir klaidų vertes: STDIN, STDOUT ir STDERR (kurias atitinkamai galima pakeisti 0, 1 ir 2). Tokiu būdu, jei mes ...

vartotojas @ nešiojamas kompiuteris: ~ $ cat tests 2> / dev / null
vartotojas @ nešiojamas kompiuteris: ~ $

... Pamatysime, kad klaidos pranešimas nebus pateiktas konsolėje.

Turite būti atsargūs, nes sintaksė yra būtina: tarp simbolių 2 ir> neturi būti tarpo. Priešingu atveju tai suteiktų:

vartotojas @ nešiojamas kompiuteris: ~ $ cat tests 2> / dev / null
katė: testai: Failo ar katalogo nėra
cat: 2: failo ar katalogo nėra

Priešingai, tarpas tarp> ir / dev / null neturės neigiamos įtakos rezultatui.

Mes taip pat galėtume naudoti klaidų peradresavimą, kad užfiksuotume klaidas žurnalo faile taip:

vartotojas @ nešiojamas kompiuteris: ~ $ cat tests 2> err.log

Kitas įdomus atvejis būtų rezultatų rinkimas kitame faile tol, kol neįvyks klaida, kurią mes pateikiame:

vartotojas @ nešiojamas kompiuteris: ~ $ cat test 1> output_result 2> err.log

Galiausiai būtina įdėti išraišką "> / dev / null 2> & 1", kurioje yra sujungta standartinė išvestis ir klaidos išvestis, nukreipiant jas taip, kad jokiu būdu nebūtų gaunama išvesties informacija.


8 komentarai, palikite savo

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Gvidas Ignacas Ignacio sakė

    Ak, bet trūksta vienos iš dažniausiai naudojamų / dev / null programų, kurios ištuština failus: $ cat / dev / null> file.log Tokiu būdu failas file.log bus tuščias. Pridėti!

    1.    Eduardo H. sakė

      Būtent paaiškinimo jis ieškojo.
      Palaikau pasiūlymą jį pridėti =)

      Sveiki atvykę!

  2.   pablo sakė

    Sveiki, pirmiausia straipsnis yra labai geras! antrasis norėčiau prisidėti prie šios nuorodos šia tema Cron darbas php iš Cpanel ir trečiasis sveikinimas tinklaraščiui!

  3.   pablo sakė

    Gražus straipsnis apie „dev / null“, kokia gėda manau, kad anksčiau klaidingai komentavau netinkamoje vietoje! aš atsiprašau

  4.   Anoniminis sakė

    ačiū už gerą indėlį

  5.   Džersas sakė

    Sveikinimai, aš puolu niekais. Aš naudoju „andrirc“ ir gaunu privatųjį iš savo slapyvardžio su žodžiu „Null“. Po 2 sekundžių programa užsidaro, kurią skaičiau, ir, ką matau, tai gali padaryti tik „Shell“, o ne kažkas išorinis. Bandžiau nepaisyti savęs / ignoruoti -lrpcntikd ir Niekas manęs nestebina, komanda vis ateina. Jei turite kokių nors būdų pabandyti jį užblokuoti, aš tai įvertinčiau. Cheers

  6.   Sofija Martinez sakė

    Kas atsitiks, jei vykdant sakinį simbolis> nebus dedamas?

    Ar kas nors galėtų mane nukreipti?

  7.   Nulis sakė

    Labas rytas, aš įdiegiau Debian netinst į ACER Extensa 5620Z – 32 bitų. Kai diegimas iš USB baigtas ir pendrive išimama, kad paleidžiama iš kietojo disko (neiš naujo įdiegti iš rašiklio), bet paleidimo momentu sistema ji manęs klausia:
    debian prisijungimas: xxxxxxxx (gerai)
    Slaptažodis: xxxxxxxx (gerai)
    nil@debian:~$ ???? kas čia? Ką turėčiau ten įdėti?

    Be šios komandos negaliu tęsti sistemos įkrovos.
    Ar gali man padėti? Nežinau, kaip turėčiau tęsti.
    Labai ačiū. Geriausi linkėjimai.