Çfarë është / dev / null dhe si mund t'ju ndihmojë?

Nëse tashmë kemi disa nocione të pemës së direktorive GNU / Linux, të paktën duhet të jemi të njohur me referencën / dev /, e cila në të vërtetë është aty ku të gjitha skedarët lidhen me pajisje harduerike.

Nëse shikojmë në direktori / dev / ne do të shohim një "skedar" të quajtur null, por nëse duam ta hapim për të parë përmbajtjen e tij, sistemi do të na tregojë se nuk është e mundur pasi që nuk është përmbajtje e zakonshme. Unë e kam bashkangjitur fjalën skedar sepse, siç e dini të gjithë për Linux, gjithçka (hardueri dhe softueri) përfaqësohet si skedar.

Ky është një kontribut nga Daniel Durante, duke u bërë kështu një nga fituesit e konkursit tonë javor: «Ndani ato që dini për Linux« Urime Daniel!

Me çfarë pajisje korrespondon / dev / null?

Për qëllime praktike, imagjinoni një kazan plehrash, një gropë pa fund ose një hapësirë ​​të jashtme në të cilën do të hidhni ndonjë gjë pa mundësinë e rikuperimit të saj (pa marrë parasysh sa përpiqen djemtë nga NASA).

Por nëse tashmë kam komanda si rm, pse dua të fshij diçka të re?

Për shkak se mënyra se si funksionojnë të dy "vrimat e zeza" është krejtësisht e ndryshme: si do të kalonit tejkalimin e daljes standarde të një gabimi në një komandë brenda një skenari shell gjatë ekzekutimit? Këtu hyn / dev / null.

Le ta shohim me një shembull.

Ne kemi krijuar një skedar të quajtur teste që përmban vargun "Hello World". Nëse duam të përfaqësojmë përmbajtjen e asaj skedari në rreshtin e komandës, mund ta bëjmë në mënyrën vijuese:

përdoruesi @ laptop: ~ $ provë mace
Përshendetje Botë

Nëse skedari nuk ekzistonte ose emërtohej si test (me një '' në fund), ne do të merrnim gabimin e mëposhtëm në tastierë:

përdorues @ laptop: tests $ testet e maceve
cat: teste: Skedari ose direktoria nuk ekziston

Çfarë mund të bëjmë për të shmangur mesazhin e gabimit? Epo, thjesht ridrejtoni prodhimin e komandës, në rast gabimi, në një "kazan plehrash", që do të thotë / dev / null

Si ta specifikojmë që të jetë në rast gabimi? Këtu futni vlerat standarde të hyrjes, daljes dhe gabimit për një program: STDIN, STDOUT dhe STDERR (të cilat mund të zëvendësohen përkatësisht me 0, 1 dhe 2). Në këtë mënyrë, nëse vendosim ...

përdoruesi @ laptop: tests $ testet e maceve 2> / dev / null
përdoruesi @ laptop: ~ $

Do të shohim që mesazhi i gabimit nuk do të prodhohet në tastierë.

Duhet të keni kujdes sepse sintaksa është thelbësore: midis karaktereve 2 dhe> nuk duhet të ketë hapësirë. Përndryshe, do të jepte sa vijon:

përdoruesi @ laptop: tests $ testet e maceve 2> / dev / null
cat: teste: Skedari ose direktoria nuk ekziston
cat: 2: Skedari ose direktoria nuk ekziston

Në të kundërt, një hapësirë ​​midis> dhe / dev / null nuk do të ndikojë negativisht në rezultat.

Ne gjithashtu mund të përdorim ridrejtimin e gabimeve, për shembull, për të kapur gabime në një skedar regjistri si më poshtë:

përdorues @ laptop: tests $ testet e maceve 2> err.log

Një rast tjetër interesant do të ishte mbledhja e rezultateve në një skedar tjetër për sa kohë që nuk ndodh një gabim, për të cilin do të vendosnim:

përdorues @ laptop: test $ cat test 1> output_result 2> err.log

Më në fund, vlen të vendosni shprehjen «> / dev / null 2> & 1» në të cilën kombinohen dalja standarde dhe dalja e gabimit, duke i ridrejtuar ato në mënyrë që në asnjë rast të mos merret informacioni i daljes.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Guido Ignatius Ignatius dijo

    Ah, por mungon një nga shërbimet më të përdorura që ka / dev / null, e cila është zbrazja e skedarëve: $ cat / dev / null> file.log Në këtë mënyrë, skedari file.log do të jetë bosh. Shtojeni!

    1.    Eduard H. dijo

      Ishte pikërisht shpjegimi që ai po kërkonte.
      Unë mbështes lëvizjen për ta shtuar atë =)

      Përshëndetje!

  2.   Paul dijo

    Përshëndetje, para së gjithash artikulli është shumë i mirë! e dyta do të doja të kontribuoja diçka me këtë lidhje në këtë temë punë cron në php nga Cpanel dhe urimi i trete per blogun!

  3.   Paul dijo

    Artikull i bukur në dev / null, çfarë turpi mendoj se gabimisht komentova në vendin e gabuar më parë! kerkoj falje

  4.   anonim dijo

    faleminderit kontribut të mirë

  5.   fanella dijo

    Përshëndetje Unë jam duke marrë sulm nul. Unë përdor andrirc dhe marr një privat nga nofka ime me fjalën Null. 2 sekonda më vonë programi mbyllet Unë kam lexuar dhe nga ajo që shoh kjo mund të bëhet vetëm nga Shell, jo nga dikush i jashtëm. Jam përpjekur të injoroj veten / injoroj -lrpcntikd dhe Asgjë nuk më befason komanda vazhdon të vijë. Nëse keni ndonjë mënyrë që të përpiqeni ta bllokoni, unë do ta vlerësoja atë. Brohoritje

  6.   Sofia martinez dijo

    Çfarë ndodh nëse gjatë ekzekutimit të fjalisë nuk vendoset simboli>?

    A mund të më udhëzojë dikush ju lutem?

  7.   Zero dijo

    Mirëmëngjes, kam instaluar Debian netinst në ACER Extensa 5620Z – 32 bit. Pasi të përfundojë instalimi nga USB dhe të hiqet pendrive në mënyrë që të niset nga hard disku (mos e riinstaloni nga stilolapsi) por në momentin e nisjes sistemi që ajo më pyet:
    hyrje në debian: xxxxxxxx (ok)
    Fjalëkalimi: xxxxxxxx (ok)
    nil@debian:~$ ???? çfarë është kjo? Çfarë duhet të vendos atje?

    Pa këtë komandë nuk mund të vazhdoj me nisjen e sistemit.
    A mund te me ndihmosh? Nuk e di si duhet të vazhdoj.
    Faleminderit shumë. Përshëndetjet më të mira.