Failihaldus

Mis on / dev / null ja kuidas seda kasutada

Mis on / dev / null ja kuidas seda kasutada
Linux on huvitav operatsioonisüsteem, mis majutab mõnda virtuaalseadet mitmel otstarbel. Mis puutub süsteemis töötavatesse programmidesse, siis need virtuaalseadmed töötavad justkui päris failidena. Tööriistad saavad nendest allikatest andmeid taotleda ja neid edastada. Andmed genereerib OS kettalt lugemise asemel.

Üks selline näide on / dev / null. See on spetsiaalne fail, mida leidub igas Linuxi süsteemis. Kuid erinevalt enamikust teistest virtuaalsetest failidest kasutatakse seda kirjutamise asemel lugemise asemel. Ükskõik, mis te / dev / nullile kirjutate, visatakse ära, unustatakse tühjusse. Seda tuntakse UNIX-süsteemi nullseadmena.

Miks soovite midagi tühjusesse visata?? Kontrollime, mis on / dev / null ja selle kasutamine.

Eeldused

Enne sukeldumist sügavale / dev / null-i kasutusse peame sellest selgelt aru saama stdout ja stderr andmevoog. Vaadake seda põhjalikku juhendit stdin, stderr, ja stdout.

Teeme kiire värskenduse. Kui käivitatakse mõni käsurea utiliit, genereerib see kaks väljundit. Väljund läheb stdout ja viga (kui see on genereeritud) läheb stderr. Vaikimisi on mõlemad need andmevood terminaliga seotud.

Näiteks järgmine käsk printib stringi topelt jutumärki. Siin on väljund salvestatud stdout.

$ kaja "Tere maailm"

Järgmine käsk näitab meile varem käivitatud käsu väljumisolekut.

$ kaja $?

Kuna eelmine käsk jooksis edukalt, on väljumise olek 0. Vastasel juhul on väljumise olek erinev. Mis juhtub, kui proovite käivitada kehtetu käsu?

$ adfadsf
$ kaja $?

Nüüd peame teadma failikirjeldaja kohta. UNIX-i ökosüsteemis on need failile määratud täisarvud. Mõlemad stdout (faili kirjeldaja = 1) ja stderr (faili kirjeldaja = 2) on konkreetne faili kirjeldaja. Kasutades failikirjeldust (antud olukorras 1 ja 2) saame suunata stdout ja stderr teistesse failidesse.

Alustuseks suunab järgmine näide stdout kaja käsk tekstifaili. Siin ei täpsustanud me faili kirjeldajat. Kui pole täpsustatud, kasutab bash stdout algselt.

$ echo “Hello World”> logi.txt

Järgmine käsk suunab faili stderr tekstifaili.

$ asdfadsa 2> viga.txt

Kasutades / dev / null

Väljundi ümbersuunamine / dev / null

Nüüd oleme valmis õppima, kuidas / dev / null-i kasutada. Kõigepealt kontrollime, kuidas tavalist väljundit ja viga filtreerida. Järgmises käsus proovib grep otsida stringi (antud juhul tere) kataloogist “/ sys”.

$ grep -r tere / sys /

Kuid see tekitab palju vigu, kuna ilma juurõigusteta ei pääse grep mitmele failile juurde. Sellisel juhul toob see kaasa vead „Luba keelatud”. Nüüd saame ümbersuunamist kasutades saada selgema väljundi.

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

Väljund näeb palju parem välja, eks? Ei midagi! Sellisel juhul pole grepil juurdepääsu paljudele failidele ja juurdepääsetavatele pole stringi "tere".

Järgmises näites pingutame Google'i.

$ ping google.com

Kuid me ei taha kõiki neid edukaid pingitulemusi näha. Selle asemel tahame keskenduda ainult vigadele, kui ping ei jõudnud Google'ini. Kuidas me seda teeme?

$ ping google.com 1> / dev / null

Siin sisu stdout kantakse / dev / null, jättes ainult vead.

Suunake kogu väljund kataloogi / dev / null

Teatud olukordades ei pruugi väljund olla üldse kasulik. Ümbersuunamise abil saame kogu väljundi tühjuse tühjendada.

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

Lõhkume seda käsku natuke. Esiteks viskame kõik stdout to / dev / null. Siis käskime teises osas bashil saata stderr kuni stdout. Selles näites pole midagi väljastada. Kuid segaduses olles saate alati kontrollida, kas käsk õnnestus edukalt.

$ kaja $?

Väärtus on 2, kuna käsk tekitas palju vigu.

Kui kipute faili kirjeldajat unustama stdout ja stderr, järgmine käsk sobib suurepäraselt. See on eelmise käsu üldisem vorming. Mõlemad stdout ja stderr suunatakse kataloogi / dev / null.

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

Muud näited

See on huvitav. Pidage meeles tööriista dd? See on võimas tööriist failide teisendamiseks ja kopeerimiseks. Lisateave dd kohta. Kasutades dd-d, saame testida teie ketta järjestikku lugemise kiirust. Muidugi pole see täpne mõõtmine. Kiiretesti jaoks on see siiski üsna kasulik.

$ dd kui = = / dev / null olek = progress bs = 1M iflag = otsene

Siin olen kasutanud Ubuntu 18.04.4 ISO suur fail.

Samamoodi saate testida ka oma Interneti-ühenduse allalaadimiskiirust.

$ wget -O / dev / null

Lõpumõtted

Loodetavasti on teil selge arusaam sellest, mis see / dev / null fail on. See on spetsiaalne seade, mis kui see on sinna kirjutatud, visatakse ära ja kui loetakse sealt, loeb see tühjaks. Selle huvitava funktsiooni tõeline potentsiaal on huvitavates bash-skriptides.

Kas olete huvitatud bashi skriptimisest? Tutvuge algaja juhendiga bash-skriptimiseks.

Nautige!

Kasulikud tööriistad Linuxi mängijatele
Kui teile meeldib Linuxis mänge mängida, on tõenäoline, et olete mängukogemuse parandamiseks kasutanud selliseid rakendusi ja utiliite nagu Wine, Lutr...
HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...
Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...