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!