Jos meillä on jo joitain käsitteitä GNU / Linux-hakemistopuusta, meidän pitäisi ainakin tuntea / dev / reference, joka on käytännössä missä kaikki tiedostot liittyvät laitteistot.
Jos katsomme hakemistoa / dev / näemme "tiedoston" nimeltä nolla, mutta jos haluamme avata sen nähdäksesi sen sisällön, järjestelmä kertoo meille, että se ei ole mahdollista, koska se ei ole tavallista sisältöä. Olen liittänyt sanatiedoston, koska kuten kaikki tiedät Linuxille, kaikki (laitteisto ja ohjelmisto) on esitetty tiedostona. |
Mitä laitetta / dev / null vastaa?
Kuvittele käytännön tarkoituksiin roskakori, pohjaton kuoppa tai avaruus, johon heittää mitään ilman mahdollisuutta palauttaa sitä (riippumatta siitä, kuinka kovasti NASA-kaverit yrittävät).
Mutta jos minulla on jo komentoja, kuten rm, miksi haluan jotain uutta, jonka poistan?
Koska molempien "mustien aukkojen" toiminta on täysin erilaista: kuinka ohittaisit komentotiedoston vakiotuloksen komentosarjassa komentosarjan komentosarjassa suorituksen aikana? Tässä tulee sisään / dev / null.
Katsotaanpa se esimerkin avulla.
Olemme luoneet testitiedoston, joka sisältää merkkijonon "Hello World". Jos haluamme edustaa kyseisen tiedoston sisältöä komentorivillä, voimme tehdä sen seuraavalla tavalla:
käyttäjä @ kannettava tietokone: ~ $ kissatesti
Hei maailma
Jos tiedostoa ei ole olemassa tai se on nimetty testiksi (jonka lopussa on s), saamme seuraavan virheen konsolissa:
käyttäjä @ kannettava tietokone: ~ $ kissatestit
cat: tests: Tiedostoa tai hakemistoa ei ole olemassa
Mitä voisimme tehdä välttääksemme virheilmoituksen? No, yksinkertaisesti ohjaa komennon lähtö virheiden sattuessa "roskakoriin", toisin sanoen / dev / null
Kuinka määritämme sen virheeksi? Tässä syötetään ohjelman vakiotulo-, lähtö- ja virhearvot: STDIN, STDOUT ja STDERR (jotka voidaan korvata vastaavasti 0, 1 ja 2). Tällä tavalla, jos laitamme ...
käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> / dev / null
käyttäjä @ kannettava tietokone: ~ $
… Näemme, että virheilmoitusta ei tuoteta konsolissa.
Sinun on oltava varovainen, koska syntakse on välttämätön: merkkien 2 ja> välillä ei saa olla tilaa. Muuten se antaisi seuraavan:
käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> / dev / null
cat: tests: Tiedostoa tai hakemistoa ei ole olemassa
cat: 2: Tiedostoa tai hakemistoa ei ole olemassa
Sitä vastoin väli> ja / dev / null välillä ei vaikuta negatiivisesti tulokseen.
Voisimme myös käyttää virheiden uudelleenohjausta esimerkiksi virheiden sieppaamiseen lokitiedostoon seuraavasti:
käyttäjä @ kannettava tietokone: ~ $ kissa testaa 2> err.log
Toinen mielenkiintoinen tapaus olisi tulosten kerääminen toiseen tiedostoon niin kauan kuin virheitä ei tapahdu, minkä vuoksi asetamme:
käyttäjä @ kannettava tietokone: ~ $ kissatesti 1> output_result 2> err.log
Lopuksi on mahdollista laittaa lauseke «> / dev / null 2> & 1», jossa vakiolähtö ja virhelähtö yhdistetään, ohjaamalla ne uudelleen siten, että tulosinformaatiota ei missään tapauksessa saada.
Ah, mutta yksi käytetyimmistä / dev / null-apuohjelmista puuttuu, mikä tyhjentää tiedostot: $ cat / dev / null> file.log Tällä tavoin tiedosto.log-tiedosto on tyhjä. Lisää se!
Se oli juuri selitys, jota hän etsi.
Tuen esitystä sen lisäämiseksi =)
Saludos!
Hei, ensinnäkin artikkeli on erittäin hyvä! toinen haluaisin antaa jotain tällä linkillä aiheesta cron-työ php: ssä Cpanelilta ja kolmas onnittelut blogista!
Hieno artikkeli dev / nullista, mitä sääli luulen, että kommentoin virheellisesti väärässä paikassa aiemmin! Pahoittelen
kiitos hyvästä panoksesta
Terveisiä saan hyökkäyksen tyhjäksi. Käytän andrirciä ja saan yksityisen lempinimestäni sanalla Null. 2 sekuntia myöhemmin ohjelma sulkeutuu, olen lukenut, ja mielestäni tämän voi tehdä vain kuori, ei joku ulkopuolinen. Olen yrittänyt sivuuttaa itseni / sivuuttaa -lrpcntikd, eikä mikään yllätä minua, komento tulee jatkuvasti. Jos sinulla on tapa yrittää estää se, kiitän sitä. Kippis
Mitä tapahtuu, jos virkettä suoritettaessa symbolia> ei sijoiteta?
Voisiko joku ohjata minua?
Hyvää huomenta, olen asentanut Debian netinstin ACER Extensa 5620Z – 32-bittiseen versioon.. Kun asennus USB:ltä on valmis ja pendrive irrotettu niin että se käynnistyy kiintolevyltä (älä asenna uudelleen kynästä), mutta käynnistyksen yhteydessä järjestelmä hän kysyy minulta:
debianin kirjautuminen: xxxxxxxx (ok)
Salasana: xxxxxxxxx (ok)
nil@debian:~$ ???? mikä tämä on? Mitä sinne pitäisi laittaa?
Ilman tätä komentoa en voi jatkaa järjestelmän käynnistystä.
Voitko auttaa minua? En tiedä miten minun pitäisi jatkaa.
Kiitos paljon. Ystävällisin terveisin.