Čo je / dev / null a ako vám môže pomôcť?

Ak už máme nejaké predstavy o adresárovom strome GNU / Linux, mali by sme byť oboznámení aspoň s / dev / reference, ktorá je vlastne miestom, kde sa nachádzajú všetky súbory spojené s hardvérové ​​zariadenia.

Ak sa pozrieme do adresára / dev / uvidíme „súbor“ s názvom null, ale ak ho chceme otvoriť, aby sme videli jeho obsah, systém nám oznámi, že to nie je možné, pretože nejde o bežný obsah. Priložil som slovo súbor, pretože ako všetci viete v systéme Linux, všetko (hardvér a softvér) je reprezentované ako súbor.

Toto je príspevok od Daniela Duranteho, ktorý sa stal jedným z víťazov našej týždennej súťaže: «Podeľte sa o to, čo viete o systéme Linux«. Gratulujem Daniel!

Akému zariadeniu zodpovedá / dev / null?

Pre praktické účely si predstavte odpadkový kôš, bezodnú jamu alebo vesmír, do ktorého môžete vrhnúť čokoľvek bez možnosti ich získania (bez ohľadu na to, ako veľmi sa chlapci z NASA snažia).

Ale ak už mám príkazy ako rm, prečo chcem niečo nové vymazať?

Pretože spôsob, akým fungujú obe „čierne diery“, je úplne odlišný: ako by ste postupovali pri prepísaní štandardného výstupu chyby v príkaze v skripte shellu za behu programu? Tu prichádza na rad / dev / null.

Pozrime sa na príklad.

Vytvorili sme súbor s názvom testy obsahujúci reťazec „Hello World“. Ak chceme reprezentovať obsah tohto súboru na príkazovom riadku, mohli by sme to urobiť nasledujúcim spôsobom:

používateľ @ laptop: ~ $ test mačiek
Ahoj svet

Ak súbor neexistoval alebo bol pomenovaný ako testy (na konci je písmeno „s“), v konzole by sa vyskytla nasledujúca chyba:

user @ laptop: ~ $ mačacie testy
cat: tests: Súbor alebo adresár neexistuje

Čo by sme mohli urobiť, aby sme sa vyhli chybovému hláseniu? Jednoducho presmerujte výstup príkazu, v prípade chyby, na „odpadkový kôš“, to znamená na / dev / null

Ako ho určíme v prípade chyby? Tu zadáte štandardné vstupné, výstupné a chybové hodnoty pre program: STDIN, STDOUT a STDERR (ktoré je možné nahradiť 0, 1 a 2). Týmto spôsobom, ak dáme ...

user @ laptop: ~ $ cat testy 2> / dev / null
používateľ @ laptop: ~ $

... Uvidíme, že chybové hlásenie sa na konzole nevytvorí.

Musíte byť opatrní, pretože syntax je nevyhnutná: medzi znakmi 2 a> by nemal byť žiadny priestor. V opačnom prípade by to poskytlo toto:

user @ laptop: ~ $ cat testy 2> / dev / null
cat: tests: Súbor alebo adresár neexistuje
cat: 2: Súbor alebo adresár neexistuje

Naproti tomu medzera medzi> a / dev / null nebude mať negatívny vplyv na výsledok.

Mohli by sme napríklad použiť aj presmerovanie chýb, aby sme chyby v protokolovom súbore zachytili nasledovne:

user @ laptop: ~ $ cat tests 2> err.log

Ďalším zaujímavým prípadom by bolo zhromažďovanie výsledkov do iného súboru, pokiaľ by nedošlo k chybe, pre ktorú by sme dali:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

Nakoniec stojí za to vložiť výraz «> / dev / null 2> & 1», v ktorom sa kombinuje štandardný výstup a výstup chyby, a presmerovať ich tak, aby sa v žiadnom prípade nezískali výstupné informácie.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Guido Ignatius Ignatius dijo

    Aha, ale chýba jeden z najpoužívanejších nástrojov, ktoré / dev / null má, čo je vyprázdňovanie súborov: $ cat / dev / null> file.log Týmto spôsobom bude súbor file.log prázdny. Pridajte to!

    1.    Eduardo H. dijo

      Bolo to presne to vysvetlenie, ktoré hľadal.
      Podporujem návrh na jeho pridanie =)

      Saludos!

  2.   pablo dijo

    Dobrý deň, v prvom rade je článok veľmi dobrý! druhý by som chcel niečím prispieť týmto odkazom na túto tému úloha cron v php od Cpanela a tretia gratulácia k blogu!

  3.   pablo dijo

    Pekný článok o dev / null, aká škoda si myslím, že som sa predtým omylom vyjadril na nesprávnom mieste! ospravedlňujem sa

  4.   Anonymný dijo

    dakujem dobry prispevok

  5.   dresy dijo

    Pozdravujem nulový útok. Používam andrirc a zo svojej prezývky dostanem súkromie so slovom Null. O 2 sekundy neskôr sa program zavrie, čítal som a podľa toho, čo vidím, to môže urobiť iba Shell, nie niekto externý. Snažil som sa ignorovať sám seba / ignorovať -lrpcntikd a nič ma neprekvapuje, že príkaz stále prichádza. Ak máte nejaký spôsob, ako sa to pokúsiť zablokovať, ocenil by som to. Na zdravie

  6.   Sofia martinez dijo

    Čo sa stane, ak sa pri vykonaní vety symbol> neuloží?

    Mohol by ma niekto viesť?

  7.   Nula dijo

    Dobry den, nainstaloval som Debian netinst do ACER Extensa 5620Z – 32 bit Po ukonceni instalacie z USB a vybrati pendrive tak, aby sa bootovalo z harddisku (nepreinstalovana z pera), ale az v momente bootovania systém sa ma pýta:
    prihlasovacie meno debianu: xxxxxxxx (ok)
    Heslo: xxxxxxxx (ok)
    nil@debian:~$ ???? čo to je? Čo tam mám dať?

    Bez tohto príkazu nemôžem pokračovať v zavádzaní systému.
    Môžeš mi pomôcť? Neviem ako mám pokračovať.
    Ďakujem mnohokrát. S priateľským pozdravom.