Ano ang / dev / null at Paano Ito Magagamit

What Is Dev Null How Use It



Ang Linux ay isang nakawiwiling operating system na nagho-host ng ilang mga virtual na aparato para sa maraming layunin. Hanggang sa mga program na tumatakbo sa system ay nababahala, ang mga virtual na aparato ay kumilos na parang sila ay tunay na mga file. Maaaring humiling ang mga tool at pakainin ang data mula sa mga mapagkukunang ito. Ang data ay nabuo ng OS sa halip na basahin ang mga ito mula sa isang disk.

Ang isang tulad halimbawa ay / dev / null. Ito ay isang espesyal na file na naroroon sa bawat solong sistema ng Linux. Gayunpaman, hindi tulad ng karamihan sa iba pang mga virtual na file, sa halip na magbasa, ginagamit ito upang magsulat. Anumang isulat mo sa / dev / null ay itatapon, nakalimutan sa walang bisa. Ito ay kilala bilang null device sa isang UNIX system.







Bakit mo nais na itapon ang isang bagay sa walang bisa? Suriin natin kung ano ang / dev / null at ang paggamit nito.



Mga Pangangailangan

Bago sumisid nang malalim sa paggamit ng / dev / null, kailangan nating magkaroon ng isang malinaw na maunawaan ang stdout at stderr stream ng data. Tingnan mo ito malalim na patnubay sa si stdin , stderr , at stdout .



Mabilis na pag-refresh. Kailan man tatakbo ang anumang utos ng command-line, bumubuo ito ng dalawang output. Ang output ay napupunta sa stdout at ang error (kung nabuo) ay mapupunta stderr . Bilang default, ang parehong mga stream ng data na ito ay nauugnay sa terminal.





Halimbawa, i-print ng sumusunod na utos ang string sa loob ng doble na panipi. Dito, ang output ay nakaimbak sa stdout .

$itinaponKamusta Mundo



Ipapakita sa amin ng susunod na utos ang katayuan ng exit ng dating pinatakbo na utos.

$itinapon $?

Bilang matagumpay na tumakbo ang nakaraang utos, ang katayuan sa exit ay 0. Kung hindi man, magkakaiba ang katayuan ng exit. Ano ang mangyayari kapag sinubukan mong magpatakbo ng isang hindi wastong utos?

$ adfadsf
$itinapon $?

Ngayon, kailangan nating malaman tungkol sa deskriptor ng file. Sa ecosystem ng UNIX, ito ang mga halagang integer na nakatalaga sa isang file. Pareho stdout (tagapaglaraw ng file = 1) at stderr Ang (deskriptor ng file = 2) ay may isang tukoy na deskriptor ng file. Gamit ang deskriptor ng file (1 at 2 sa sitwasyong ito), maaari naming i-redirect ang stdout at stderr sa iba pang mga file.

Para sa nagsisimula, ang sumusunod na halimbawa ay ire-redirect ang stdout ng utos ng echo sa isang text file. Dito, hindi namin tinukoy ang tagapaglarawan ng file. Kung hindi tinukoy, gagamitin ang bash stdout bilang default.

$itinaponKamusta Mundo>log.txt

Ang sumusunod na utos ay magre-redirect ng stderr sa isang text file.

$asdfadsa2>error.txt

Paggamit / dev / null

Pag-redirect ng output sa / dev / null

Ngayon, handa na kaming malaman kung paano gamitin / dev / null. Una, suriin natin kung paano i-filter ang normal na output at error. Sa sumusunod na utos, susubukan ng grep na maghanap para sa isang string (hello, sa kasong ito) sa direktoryo ng / sys.

$mahigpit na pagkakahawak -rKamusta/sys/

Gayunpaman, bubuo ito ng maraming error tulad ng walang root privilege, hindi ma-access ng grep ang isang bilang ng mga file. Sa ganoong kaso, magreresulta ito sa Mga error na tinanggihan sa Pahintulot. Ngayon, gamit ang pag-redirect, makakakuha kami ng isang mas malinaw na output.

$mahigpit na pagkakahawak -rKamusta/sys/ 2> /dev/wala

Ang output ay mukhang mas mahusay, tama? Wala! Sa kasong ito, ang grep ay walang access sa maraming mga file at ang mga maa-access ay walang string hello.

Sa sumusunod na halimbawa, ilalagay namin sa ping ang Google.

$pingGoogle com

Gayunpaman, hindi namin nais na makita ang lahat ng mga matagumpay na mga resulta ng ping. Sa halip, nais lamang naming ituon ang mga error kapag hindi maabot ng ping ang Google. Paano natin ito nagagawa?

$pingGoogle com1> /dev/wala

Dito, ang nilalaman ng stdout ay itinapon sa / dev / null, naiwan lamang ang mga error.

I-redirect ang lahat ng output sa / dev / null

Sa ilang mga sitwasyon, ang output ay maaaring hindi maging kapaki-pakinabang sa lahat. Gamit ang pag-redirect, maaari naming itapon ang lahat ng output sa walang bisa.

$mahigpit na pagkakahawak -rKamusta/sys/ > /dev/wala2> &1

Labagin natin nang kaunti ang utos na ito. Una, itinatapon namin ang lahat ng stdout sa / dev / null. Pagkatapos, sa pangalawang bahagi, sinasabi namin na magpadala kami stderr sa stdout . Sa halimbawang ito, walang i-output. Gayunpaman, kung nalilito ka, maaari mong laging suriin kung matagumpay na tumakbo ang utos.

$itinapon $?

Ang halaga ay 2 dahil ang utos ay nakabuo ng maraming mga error.

Kung may posibilidad kang kalimutan ang tagapaglarawan ng file ng stdout at stderr , ang sumusunod na utos ay magagawa lamang. Ito ay isang mas pangkalahatang format ng nakaraang utos. Pareho stdout at stderr ay ire-redirect sa / dev / null.

$mahigpit na pagkakahawak -rKamusta/sys/ &> /dev/wala

Iba pang mga halimbawa

Ito ay isang kagiliw-giliw na isa. Naaalala ang tool ng dd? Ito ay isang malakas na tool para sa pag-convert at pagkopya ng mga file. Matuto nang higit pa tungkol sa dd. Gamit ang dd, masusubukan namin ang sunud-sunod na bilis ng pagbabasa ng iyong disk. Siyempre, hindi ito isang tumpak na pagsukat. Gayunpaman, para sa isang mabilis na pagsubok, kapaki-pakinabang ito.

$DD kung=<big_file> ng=/dev/walakatayuan= pag-unladbs= 1Miflag= derekta

Dito, ginamit ko ang Ubuntu 18.04.4 ISO bilang malaking file.

Katulad nito, maaari mo ring subukan ang bilis ng pag-download ng iyong koneksyon sa internet.

$wget -O /dev/wala<big_file_link>

Pangwakas na saloobin

Inaasahan ko, mayroon kang isang malinaw na pag-unawa sa kung ano ang / dev / null file na ito. Ito ay isang espesyal na aparato na, kung nakasulat dito, itatapon at kung basahin mula, ay babasahin. Ang totoong potensyal ng kagiliw-giliw na tampok na ito ay sa mga kawili-wiling bash script.

Interesado ka ba sa bash scripting? Tignan mo gabay ng nagsisimula sa bash scripting .

Mag-enjoy!