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!