Failu pārvaldība

Kas ir / dev / null un kā to izmantot

Kas ir / dev / null un kā to izmantot
Linux ir interesanta operētājsistēma, kurā tiek mitinātas dažas virtuālās ierīces daudziem mērķiem. 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. Datus ģenerē OS, nevis nolasa no diska.

Viens šāds piemērs ir / dev / null. Tas ir īpašs fails, kas atrodas katrā atsevišķā Linux sistēmā. Tomēr, atšķirībā no vairuma citu virtuālo failu, lasīšanas vietā to izmanto rakstīšanai. Viss, ko rakstīsit / dev / null, tiks izmests, aizmirsts tukšumā. UNIX sistēmā to sauc par nulles ierīci.

Kāpēc jūs vēlaties kaut ko izmest tukšumā?? Pārbaudīsim, kas ir / dev / null un tā lietojums.

Priekšnoteikumi

Pirms ienirt dziļi / dev / null lietošanā, mums ir skaidri jāsaprot stdout un stderr datu plūsma. Iepazīstieties ar šo padziļināto ceļvedi stdin, stderr, un stdout.

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

Piemēram, šī komanda izdrukās virkni divkāršās pēdiņās. Šeit izeja tiek saglabāta stdout.

$ echo “Sveika pasaule”

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

$ atbalss $?

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

$ adfadsf
$ atbalss $?

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

Iesākumam šis piemērs novirzīs stdout atbalss komandu teksta failā. Šeit mēs nenorādījām faila deskriptoru. Ja nav norādīts, bash izmantos stdout pēc noklusējuma.

$ echo “Hello World”> žurnāls.txt

Šī komanda novirzīs stderr uz teksta failu.

$ asdfadsa 2> kļūda.txt

Izmantojot / dev / null

Notiek izejas novirzīšana uz / dev / null

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

$ grep -r sveiki / sys /

Tomēr tas radīs daudz kļūdu, jo bez root privilēģijām grep nevar piekļūt vairākiem failiem. Šādā gadījumā tas radīs kļūdas “Atļauja liegta”. Izmantojot novirzīšanu, mēs varam iegūt skaidrāku rezultātu.

$ grep -r sveiki / sys / 2> / dev / null

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

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

$ ping google.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?

$ ping google.com 1> / dev / null

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

Pārvirziet visu izvadi uz / dev / null

Dažās situācijās izeja var nebūt vispār noderīga. Izmantojot novirzīšanu, mēs varam izvadīt visu izvadi tukšumā.

$ grep -r sveiki / sys /> / dev / null 2> & 1

Nedaudz pārtrauksim šo komandu. Pirmkārt, mēs izgāžam visus stdout to / dev / null. Tad otrajā daļā mēs teicam basham nosūtīt stderr uz stdout. Šajā piemērā nav ko izvest. Tomēr, ja esat neskaidrs, vienmēr varat pārbaudīt, vai komanda ir veiksmīgi izpildīta.

$ atbalss $?

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

Ja jums ir tendence aizmirst faila deskriptoru stdout un stderr, šāda 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.

$ grep -r sveiki / 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īgu lasīšanas ātrumu. Protams, tas nav precīzs mērījums. Tomēr ātrai pārbaudei tas ir diezgan noderīgi.

$ dd, ja = no = / dev / null statuss = progress bs = 1M iflag = tiešs

Šeit es esmu izmantojis Ubuntu 18.04.4 ISO kā lielais fails.

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

$ wget -O / dev / null

Pēdējās domas

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

Vai jūs interesē bash skripti? Apskatiet iesācēju rokasgrāmatu par bash skriptu izveidi.

Izbaudi!

Pievienojiet peles žestus operētājsistēmai Windows 10, izmantojot šos bezmaksas rīkus
Pēdējos gados datori un operētājsistēmas ir ievērojami attīstījušās. Bija laiks, kad lietotājiem bija jāizmanto komandas, lai pārvietotos pa failu pār...
Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...
WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...