logo

Kaj je /Dev/Null v Linuxu?

Če ste se učili programiranja lupine, ste morda že naleteli na nekaj, kot je /dev/null. V tem članku bomo razumeli, kaj je in kako se uporablja. Začnimo z razumevanjem, kaj je /dev.

Kaj je /dev?

V datotečnem sistemu Linux je vse datoteka ali imenik. Tudi do naprav se dostopa kot do datotek. Vaše particije trdega diska, pogon Pen, zvočniki, za vse to obstaja datoteka, iz katere se dostopa do njih. Zdaj, da bi razumeli, kako se do naprav dostopa kot datoteke, razmislite o tem na ta način: kaj naredimo z datoteko? Iz njega beremo podatke in vanj zapisujemo podatke. Naprava, kot je zvočnik, lahko vnaša podatke za ustvarjanje zvoka, trdi disk se lahko uporablja za branje in pisanje podatkov, tiskalnik sprejme vhod za tiskanje datotek itd. Datoteke in naprave so si na ta način podobne



/dev je imenik, ki shranjuje vse fizične in virtualne naprave sistema Linux. Fizične naprave je enostavno razumeti, so oprijemljive naprave, kot so pisala, zvočniki, tiskalniki itd. Sistem Linux ima tudi virtualne naprave, ki delujejo kot naprava, vendar ne predstavljajo fizične naprave.

Kaj je /dev/null?

To je virtualna naprava, ki ima posebno lastnost: vsi podatki, zapisani v /dev/null, izginejo ali izginejo. Zaradi te lastnosti se imenuje tudi bitbucket ali blackhole. Oglejmo si demonstracijo.

primerjaj z nizom

Preusmeri izhod v /dev/null

V tej predstavitvi lahko vidite, da smo dodali nekaj podatkov, vendar ti podatki niso bili shranjeni. Ta posebna lastnost /dev/null ima nekaj primerov uporabe. Oglejmo si jih.



Uporaba /dev/null

Ker zavrže vse, kar je vanj zapisano, lahko premaknete datoteke v /dev/null, da jih izbrišete. Vendar to ni široko uporabljen primer uporabe. Uporablja se predvsem za zavrženje standardnega izhoda in standardne napake iz izhoda.

Kaj sta standardni izhod in standardna napaka?

Izhod ukaza Linux vsebuje dva toka podatkov: standardni izhod (stdout) in standardna napaka (stderr0), medtem ko je standardni izhod običajni izhod, če ukaz nima napak, je standardna napaka napaka, ki jo ustvari ukaz. Izhod lahko vsebuje standardni izhod in standardni vhod. Primer stdout in stderr:

Zaženimo naslednji lupinski skript



# /bin/sh ls apt update>

Prvi ukaz se je uspešno izvedel, drugi pa je povzročil napako. Ker sta stdout in stderr dva ločena podatkovna toka, ju je mogoče obravnavati ločeno.

Kako dostopati do stderr in stdout?

Stdout in stderr sta tokova podatkov, oba pa se v Linuxu obravnavata kot datoteka. Če želite na njih izvesti kakršno koli dejanje, uporabite deskriptor datoteke, ki enolično identificira tok datoteke. Deskriptor datoteke za stdout je 1, za stderr pa 2.

igra pigeon android

Če želite dostopati do njih ločeno, si oglejmo naslednji ukaz, ki se izvaja na isti datoteki skripta, ki je bila uporabljena v prejšnjem primeru.

./script.sh 1>stdout.txt>

V tem lahko vidite, da izhod vsebuje standardne napake, vendar standardni izhod ni bil prikazan. To je zato, ker je bil tok stdout poslan v datoteko stdout.txt in lahko vidite, da datoteka stdout.txt vsebuje standardni izhod.

Med pisanjem lupinskega skripta bomo morda želeli zavreči standardno napako iz izhoda. Ne glede na tok, ki ga morda želimo zatreti iz izhoda, lahko ta tok podatkov zapišemo v /dev/null. Te podatke bi lahko zapisali v drugo datoteko, tako kot v zgornjem primeru, toda če teh podatkov ne potrebujete, zakaj bi zapravljali pomnilnik zanje, je bolje, da jih popolnoma zavržete. Oglejmo si naslednji primer

./script.sh 2>/dev/null>

In prav tako smo iz izhoda odstranili stderr. Če želite zavreči celoten izhod, lahko uporabite naslednji ukaz

command>/dev/null 2>&1>

Ukaz &> preusmeri izhod deskriptorja datoteke, ki je omenjen na levi (v zgornjem ukazu izhod 2), v tok deskriptorja datoteke, omenjenega na desni strani. Torej se izhod stderr (2) preusmeri na stdout (1), ta pa se zapiše v /dev/null in se tako uniči.

ogrodje zbirke java

Varno brisanje datotek

'/dev/null' najde uporabnost pri varnem brisanju datotek. S preusmeritvijo '/dev/null' v datoteko lahko njeno vsebino učinkovito prepišete z ničelnimi bajti, zaradi česar je težko obnoviti kakršne koli pomembne podatke.

Na primer:

leto izuma računalnika
cat /dev/null>občutljiva_datoteka>>> 

Ta ukaz nadomesti vsebino 'občutljive_datoteke' z ničelnimi bajti, kar zagotavlja njeno varno brisanje.

Čiščenje dnevniških datotek

Dnevniške datoteke lahko sčasoma naberejo veliko podatkov. Če želite izbrisati dnevniške datoteke, ne da bi prekinili delovanje storitev, lahko njihovo vsebino preusmerite na '/dev/null.'

Na primer:

Ta ukaz izprazni datoteko »syslog« tako, da njeno vsebino preusmeri na »/dev/null«, s čimer učinkovito očisti dnevnik, ne da bi izbrisal samo datoteko.

Namigi in triki:

  • Preusmerjanje standardnega izhoda v '/dev/null': 'ukaz> /dev/null'
  • Preusmerjanje standardne napake na '/dev/null': 'ukaz 2> /dev/null'
  • Preusmerjanje izhoda in napake na '/dev/null': 'ukaz>/dev/null 2>&1'

Zaključek

V tem članku smo razpravljali o tem, da je `/dev/null' v Linuxu navidezna črna luknja, kjer podatki izginejo, ko se vanjo zapišejo. Običajno se uporablja za zavrženje izpisa in napak, zaradi česar je izvajanje ukazov čistejše. Uporablja se lahko tudi za varno brisanje datotek in čiščenje dnevniških datotek. Razumevanje njegove funkcionalnosti omogoča učinkovite operacije ukazne vrstice v Linuxu.