Kas ir /dev /null un kā to lietot

What Is Dev Null How Use It



Linux ir interesanta operētājsistēma, kas daudzām vajadzībām mitina dažas virtuālās ierīces. Ciktāl tas attiecas uz programmām, kas darbojas sistēmā, šīs virtuālās ierīces darbojas tā, it kā tās būtu reāli faili. Rīki var pieprasīt un ievadīt datus no šiem avotiem. Dati tiek ģenerēti OS, nevis nolasīti no diska.

Viens no šādiem piemēriem ir /dev /null. Tas ir īpašs fails, kas atrodas katrā Linux sistēmā. Tomēr atšķirībā no vairuma citu virtuālo failu lasīšanas vietā to izmanto rakstīšanai. Viss, ko rakstāt /dev /null, tiks izmests un aizmirsts tukšumā. UNIX sistēmā tā ir pazīstama kā nulles ierīce.







Kāpēc jūs vēlaties kaut ko izmest tukšumā? Apskatīsim, kas ir /dev /null un kā tas tiek izmantots.



Priekšnosacījumi

Pirms ienirt dziļi /dev /null lietošanā, mums ir skaidri jāsaprot stdout un stderr datu straume. Pārbaudiet šo padziļināta rokasgrāmata stdin , stderr , un stdout .



Ātri atsvaidzināsim. Ikreiz, kad tiek palaista komandrindas utilīta, tā ģenerē divas izejas. Izeja iet uz stdout un kļūda (ja tā ir radīta) iet uz stderr . Pēc noklusējuma abas šīs datu plūsmas ir saistītas ar termināli.





Piemēram, šī komanda izdrukās virkni, kas atrodas pēdiņās. Šeit izvade tiek saglabāta stdout .

$izmest ārāSveika pasaule



Nākamā komanda parādīs iepriekš izpildītās komandas izejas statusu.

$izmest ārā $?

Tā kā iepriekšējā komanda tika izpildīta veiksmīgi, izejas statuss ir 0. Pretējā gadījumā izejas statuss būs atšķirīgs. Kas notiek, mēģinot palaist nederīgu komandu?

$ adfadsf
$izmest ārā $?

Tagad mums jāzina par faila aprakstu. UNIX ekosistēmā tās ir veselas skaitļa vērtības, kas piešķirtas failam. Abi stdout (faila deskriptors = 1) un stderr (faila apraksts = 2) ir noteikts faila apraksts. Izmantojot faila deskriptoru (šajā situācijā 1 un 2), mēs varam novirzīt stdout un stderr uz citiem failiem.

Iesācējam šāds piemērs novirzīs stdout no atbalss komandas teksta failā. Šeit mēs nenorādījām faila deskriptoru. Ja tas nav norādīts, tiks izmantots bash stdout pēc noklusējuma.

$izmest ārāSveika pasaule>log.txt

Šī komanda novirzīs stderr uz teksta failu.

$asdfadsa2>error.txt

Izmantojot /dev /null

Izejas novirzīšana uz /dev /null

Tagad mēs esam gatavi iemācīties lietot /dev /null. Vispirms pārbaudīsim, kā filtrēt normālu izvadi un kļūdu. Šajā komandā grep mēģinās meklēt virkni (šajā gadījumā sveiki) direktorijā /sys.

$satvēriens -rSveiki/sys/

Tomēr tas radīs daudz kļūdu, jo bez saknes privilēģijām grep nevar piekļūt vairākiem failiem. Šādā gadījumā atļaujas liegšanas kļūdas. Tagad, izmantojot novirzīšanu, mēs varam iegūt skaidrāku izvadi.

$satvēriens -rSveiki/sys/ 2> /dev/null

Rezultāts izskatās daudz labāk, vai ne? Nekas! Šajā gadījumā grep nav piekļuves daudziem failiem, un tiem, kas ir pieejami, nav virknes sveiki.

Šajā piemērā mēs pingēsim Google.

$pingGoogle com

Tomēr mēs nevēlamies redzēt visus šos veiksmīgos ping rezultātus. Tā vietā mēs vēlamies koncentrēties tikai uz kļūdām, ja ping nevarēja sasniegt Google. Kā mēs to darām?

$pingGoogle com1> /dev/null

Lūk, saturs stdout tiek izmesti uz /dev /null, atstājot tikai kļūdas.

Novirziet visu izvadi uz /dev /null

Dažās situācijās izvade var nebūt noderīga. Izmantojot novirzīšanu, mēs varam izlaist visu produkciju tukšumā.

$satvēriens -rSveiki/sys/ > /dev/null2> &1

Nedaudz pārkāpsim šo komandu. Pirmkārt, mēs izmetam visus stdout uz /dev /null. Tad otrajā daļā mēs sakām bash, lai sūta stderr uz stdout . Šajā piemērā nekas nav jāizdod. Tomēr, ja esat apmulsis, vienmēr varat pārbaudīt, vai komanda tika izpildīta veiksmīgi.

$izmest ārā $?

Vērtība ir 2, jo komanda radīja daudz kļūdu.

Ja mēdzat aizmirst faila aprakstu stdout un stderr , šī komanda darbosies lieliski. Tas ir vispārīgāks iepriekšējās komandas formāts. Abi stdout un stderr tiks novirzīts uz /dev /null.

$satvēriens -rSveiki/sys/ &> /dev/null

Citi piemēri

Šis ir interesants. Atcerieties dd rīku? Tas ir spēcīgs rīks failu konvertēšanai un kopēšanai. Uzziniet vairāk par dd. Izmantojot dd, mēs varam pārbaudīt jūsu diska secīgo lasīšanas ātrumu. Protams, tas nav precīzs mērījums. Tomēr ātrai pārbaudei tas ir diezgan noderīgi.

$dd ja=<liels_fails> no=/dev/nullstatuss= progressbs= 1 miljonsiflag= tiešs

Šeit kā lielo failu esmu izmantojis Ubuntu 18.04.4 ISO.

Līdzīgi varat arī pārbaudīt interneta savienojuma lejupielādes ātrumu.

$wget -VAI /dev/null<big_file_link>

Galīgās domas

Cerams, ka jums ir skaidra izpratne par to, kas ir šis /dev /null fails. Tā ir īpaša ierīce, kas, ja tajā ir rakstīts, izmet un, ja nolasa, nolasa nulli. Šīs interesantās funkcijas patiesais potenciāls ir interesantos bash skriptos.

Vai jūs interesē bash skripti? Izbraukšana iesācēja bash skriptu ceļvedis .

Izbaudi!