Failų tvarkymas

Kas yra / dev / null ir kaip jį naudoti

Kas yra / dev / null ir kaip jį naudoti
„Linux“ yra įdomi operacinė sistema, talpinanti kai kuriuos virtualius įrenginius įvairiais tikslais. Kalbant apie sistemoje veikiančias programas, šie virtualūs įrenginiai veikia taip, lyg jie būtų tikri failai. Įrankiai gali pateikti užklausą ir pateikti duomenis iš šių šaltinių. Duomenis generuoja OS, o ne skaito iš disko.

Vienas iš tokių pavyzdžių yra / dev / null. Tai specialus failas, esantis kiekvienoje „Linux“ sistemoje. Tačiau, skirtingai nei dauguma kitų virtualių failų, vietoj skaitymo jie naudojami rašyti. Viskas, ką parašysite / dev / null, bus išmesta, pamiršta į tuštumą. Tai žinomas kaip „null“ įrenginys UNIX sistemoje.

Kodėl norėtumėte ką nors išmesti į tuštumą? Pažiūrėkime, kas yra / dev / null ir jo naudojimas.

Būtinos sąlygos

Prieš gilindamiesi į / dev / null naudojimą, turime aiškiai suvokti stdout ir stderr duomenų srautas. Peržiūrėkite šį išsamų vadovą stdin, stderr, ir stdout.

Greitai atsigaivinkime. Kai paleidžiamas koks nors komandinės eilutės įrankis, jis sukuria du išėjimus. Rezultatas eina į stdout ir klaida (jei ji sugeneruota) patenka į stderr. Pagal numatytuosius nustatymus abu šie duomenų srautai yra susieti su terminalu.

Pavyzdžiui, ši komanda išspausdins eilutę dviguboje kabutėje. Čia išvestis saugoma stdout.

$ echo „Sveikas pasaulis“

Kita komanda parodys mums anksčiau paleistos komandos išėjimo būseną.

$ aidas $?

Kadangi ankstesnė komanda buvo sėkmingai paleista, išėjimo būsena yra 0. Priešingu atveju išėjimo būsena bus kitokia. Kas nutinka bandant paleisti neteisingą komandą?

$ adfadsf
$ aidas $?

Dabar turime žinoti apie failo aprašą. UNIX ekosistemoje tai yra failui priskirtos sveikojo skaičiaus vertės. Tiek stdout (bylos aprašas = 1) ir stderr (failo deskriptorius = 2) turi konkretų failo aprašą. Naudodami failo deskriptorių (šioje situacijoje 1 ir 2) galime peradresuoti stdout ir stderr į kitus failus.

Pradedantiesiems, šis pavyzdys peradresuos stdout echo komandos į tekstinį failą. Čia nenurodėme failo aprašo. Jei nenurodyta, bash naudos stdout pagal nutylėjimą.

$ echo „Hello World“> žurnalas.txt

Ši komanda peradresuos stderr į teksto failą.

$ asdfadsa 2> klaida.txt

Naudojant / dev / null

Nukreipiama išvestis į / dev / null

Dabar mes pasirengę išmokti naudoti / dev / null. Pirmiausia patikrinkime, kaip filtruoti įprastą išvestį ir klaidas. Šioje komandoje grep bandys ieškoti eilutės (šiuo atveju labas) kataloge “/ sys”.

$ grep -r labas / sys /

Tačiau tai sukurs daug klaidų, nes be root teisių, grep negali pasiekti daugybės failų. Tokiu atveju bus padarytos klaidos „Uždraustas leidimas“. Dabar, naudodamiesi peradresavimu, galime gauti aiškesnę išvestį.

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

Rezultatas atrodo daug geriau, tiesa? Nieko! Šiuo atveju „grep“ neturi prieigos prie daugybės failų, o prieinamuose nėra eilutės „labas“.

Šiame pavyzdyje mes pinginsime „Google“.

$ ping google.com

Tačiau mes nenorime matyti visų tų sėkmingų ping rezultatų. Vietoj to, mes norime sutelkti dėmesį tik į klaidas, kai „ping“ nepavyko pasiekti „Google“. Kaip mes tai darome?

$ ping google.com 1> / dev / null

Čia turinys stdout yra perkeliami į / dev / null, paliekant tik klaidas.

Nukreipkite visą išvestį į / dev / null

Tam tikrose situacijose išvestis gali būti visiškai nenaudinga. Naudodami peradresavimą, mes galime išmesti visą išvestį į tuštumą.

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

Truputį sulaužykime šią komandą. Pirma, mes išmetame visus stdout to / dev / null. Tada antroje dalyje liepiame bashui išsiųsti stderr į stdout. Šiame pavyzdyje nėra nieko išvesties. Tačiau, jei esate sutrikęs, visada galite patikrinti, ar komanda sėkmingai įvykdyta.

$ aidas $?

Vertė yra 2, nes komanda sugeneravo daug klaidų.

Jei esate linkęs pamiršti failo aprašą stdout ir stderr, ši komanda bus gerai. Tai labiau apibendrintas ankstesnės komandos formatas. Tiek stdout ir stderr bus nukreiptas į / dev / null.

$ grep -r labas / sys / &> / dev / null

Kiti pavyzdžiai

Tai įdomu. Prisiminkite dd įrankį? Tai galingas įrankis failams konvertuoti ir kopijuoti. Sužinokite daugiau apie dd. Naudodami dd, mes galime patikrinti nuoseklų jūsų disko skaitymo greitį. Žinoma, tai nėra tikslus matavimas. Tačiau norint greitai išbandyti, tai gana naudinga.

$ dd, jei = iš = / dev / null status = progresas bs = 1M iflag = tiesioginis

Čia aš naudojau „Ubuntu 18“.04.4 ISO kaip didelis failas.

Taip pat galite išbandyti interneto ryšio atsisiuntimo greitį.

$ wget -O / dev / null

Paskutinės mintys

Tikimės, kad jūs aiškiai suprantate, kas yra šis / dev / null failas. Tai specialus įrenginys, kurį užrašius, jis išmetamas, o jei skaitomas iš jo, jis rodomas kaip „null“. Tikrasis šios įdomios funkcijos potencialas yra įdomiuose „bash“ scenarijuose.

Ar jus domina „bash“ scenarijai? Peržiūrėkite pradedančiųjų vadovus, kaip rašyti „bash“ scenarijus.

Mėgautis!

Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...