Ü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 =
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!