Ano ang / dev / null at paano ka nito matutulungan?

Kung mayroon na tayong ilang mga paniwala ng puno ng direktoryo ng GNU / Linux, dapat na pamilyar tayo kahit papaano sa / dev / sanggunian, na mabisa kung saan ang lahat ng mga file na nauugnay sa mga aparato sa hardware.

Kung titingnan namin ang direktoryo / dev / makikita natin ang isang "file" na tinawag walang halaga, ngunit kung nais naming buksan ito upang makita ang nilalaman nito, sasabihin sa amin ng system na hindi posible dahil hindi ito ordinaryong nilalaman. Na-enclose ko ang salitang file dahil, tulad ng alam mo para sa Linux ang lahat (hardware at software) ay kinakatawan bilang isang file.

Ito ay isang kontribusyon mula kay Daniel Durante, kaya't naging isa sa mga nagwagi sa aming lingguhang kompetisyon: «Ibahagi ang alam mo tungkol sa Linux«. Binabati kita Daniel!

Anong aparato ang tumutugma sa / dev / null?

Para sa mga praktikal na layunin, isipin ang isang basurang maaari, isang ilalim na hukay o panlabas na kalawakan kung saan magtapon ng anuman nang walang posibilidad na mabawi ito (gaano man kahirap subukan ang mga NASA).

Ngunit kung mayroon na akong mga utos tulad ng rm, bakit gusto kong may bagong matanggal?

Dahil ang paraan ng paggana ng parehong "itim na mga butas" ay ganap na magkakaiba: paano ka makakakuha ng overriding sa karaniwang output ng isang error sa isang utos sa loob ng isang shell script sa runtime? Dito pumapasok ang / dev / null.

Tingnan natin ito sa isang halimbawa.

Lumikha kami ng isang file na tinatawag na mga pagsubok na naglalaman ng string na "Hello World". Kung nais naming kumatawan sa nilalaman ng file na iyon sa linya ng utos, magagawa namin ito sa sumusunod na paraan:

gumagamit @ laptop: ~ $ cat test
Kamusta Mundo

Kung ang file ay wala o pinangalanan bilang mga pagsubok (na may isang 's' sa dulo), makukuha namin ang sumusunod na error sa console:

gumagamit @ laptop: ~ $ mga pagsubok sa pusa
cat: test: Ang file o direktoryo ay hindi umiiral

Ano ang magagawa natin upang maiwasan ang mensahe ng error? Sa gayon, i-redirect lang ang output ng utos, kung sakaling may error, sa isang "basurahan", iyon ay sa / dev / null

Paano namin ito matutukoy upang maging sakaling may error? Dito ipinasok mo ang karaniwang mga halaga ng pag-input, output, at error para sa isang programa: STDIN, STDOUT, at STDERR (na maaaring mapalitan ng 0, 1, at 2 ayon sa pagkakabanggit). Sa ganitong paraan, kung ilalagay natin ang ...

gumagamit @ laptop: ~ $ cat test 2> / dev / null
gumagamit @ laptop: ~ $

… Makikita natin na ang mensahe ng error ay hindi gagawin sa console.

Dapat kang mag-ingat dahil ang syntax ay mahalaga: sa pagitan ng mga character 2 at> dapat walang puwang. Kung hindi man, ibibigay nito ang sumusunod:

gumagamit @ laptop: ~ $ cat test 2> / dev / null
cat: test: Ang file o direktoryo ay hindi umiiral
cat: 2: Ang file o direktoryo ay hindi mayroon

Sa kaibahan, ang isang puwang sa pagitan ng> at / dev / null ay hindi negatibong makakaapekto sa resulta.

Maaari rin kaming gumamit ng pag-redirect ng error, halimbawa, upang makuha ang mga error sa isang file ng log tulad ng sumusunod:

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

Ang isa pang kawili-wiling kaso ay ang koleksyon ng mga resulta sa isa pang file hangga't hindi nangyayari ang isang error, kung saan ilalagay namin:

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

Sa wakas, nagkakahalaga ng paglalagay ng ekspresyong «> / dev / null 2> & 1» kung saan ang standard na output at ang output ng error ay pinagsama, pag-redirect sa mga ito upang sa anumang kaso ang impormasyon ng output ay nakuha.


Ang nilalaman ng artikulo ay sumusunod sa aming mga prinsipyo ng etika ng editoryal. Upang mag-ulat ng isang pag-click sa error dito.

7 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Guido Ignacio Ignacio dijo

    Ah, ngunit ang isa sa mga pinaka ginagamit na mga utility na nawawala / dev / null ay nawawala, na kung saan ay alisan ng laman ang mga file: $ cat / dev / null> file.log Sa ganitong paraan, ang file.log file ay walang laman. Idagdag mo na!

    1.    Eduardo H dijo

      Ito mismo ang paliwanag na hinahanap niya.
      Sinusuportahan ko ang paggalaw upang idagdag ito =)

      Pagbati!

  2.   Pablo dijo

    Kumusta, una sa lahat ang artikulo ay napakahusay! ang pangalawang nais kong mag-ambag ng isang bagay sa link na ito sa paksa cron job sa php mula sa Cpanel at ang pangatlong pagbati para sa blog!

  3.   Pablo dijo

    Magandang artikulo sa dev / null, isang kahihiyan sa palagay ko nagkamali akong nagkomento sa maling lugar dati! humihingi ako ng pasensya

  4.   Hindi kilala dijo

    salamat magandang kontribusyon

  5.   Jers dijo

    Pagbati nakakakuha ako ng null atake. Gumagamit ako ng andrirc at nakakakuha ako ng isang pribadong mula sa aking palayaw na may salitang Null. Pagkalipas ng 2 segundo isinara ang programa na binabasa ko at mula sa kung ano ang nakikita ko na magagawa lamang ito ng Shell, hindi isang panlabas. Sinubukan kong balewalain ang aking sarili / huwag pansinin -lrpcntikd at Walang sorpresa sa akin na patuloy na darating ang utos. Kung mayroon kang anumang paraan upang subukang harangan ito ay pahalagahan ko ito. Cheers

  6.   Sofia martinez dijo

    Ano ang mangyayari kung kapag naisakatuparan ang pangungusap ang simbolo> ay hindi nakalagay?

    Maaari bang may gumagabay sa akin?