Upravljanje datotekama

Što je / dev / null i kako ga koristiti

Što je / dev / null i kako ga koristiti
Linux je zanimljiv operativni sustav koji u brojne svrhe hostira neke virtualne uređaje. Što se tiče programa koji se izvode u sustavu, ti se virtualni uređaji ponašaju kao da su stvarne datoteke. Alati mogu tražiti i hraniti podatke iz tih izvora. Podatke generira OS umjesto da ih čita s diska.

Jedan od takvih primjera je / dev / null. To je posebna datoteka koja je prisutna u svakom pojedinom Linux sustavu. Međutim, za razliku od većine drugih virtualnih datoteka, umjesto čitanja, koristi se za pisanje. Sve što napišete na / dev / null, odbacit će se i zaboraviti u prazno. Poznat je kao nulti uređaj u UNIX sustavu.

Zašto biste htjeli nešto odbaciti u prazno? Provjerimo što je / dev / null i njegova upotreba.

Preduvjeti

Prije dubokog zaranjanja u upotrebu / dev / null, moramo ga jasno shvatiti stdout i stderr tok podataka. Pogledajte ovaj detaljni vodič na stdin, stderr, i stdout.

Idemo na brzinu osvježiti se. Kad god se pokrene bilo koji uslužni program naredbenog retka, generira dva izlaza. Izlaz ide na stdout a pogreška (ako je generirana) ide na stderr. Prema zadanim postavkama, oba ova toka podataka povezana su s terminalom.

Na primjer, sljedeća će naredba ispisati niz unutar dvostrukog navodnika. Ovdje se izlaz pohranjuje u stdout.

$ echo "Hello World"

Sljedeća naredba će nam pokazati status izlaza iz prethodno pokrenute naredbe.

$ echo $?

Kako se prethodna naredba uspješno izvodila, status izlaza je 0. Inače, status izlaza bit će drugačiji. Što se događa kada pokušate pokrenuti neispravnu naredbu?

$ adfadsf
$ echo $?

Sada moramo znati o opisu datoteke. U UNIX ekosustavu to su cjelobrojne vrijednosti dodijeljene datoteci. Oba stdout (deskriptor datoteke = 1) i stderr (deskriptor datoteke = 2) imaju određeni deskriptor datoteke. Pomoću deskriptora datoteke (1 i 2 u ovoj situaciji) možemo preusmjeriti datoteku stdout i stderr u druge datoteke.

Za početak, sljedeći će primjer preusmjeriti stdout naredbe echo u tekstualnu datoteku. Ovdje nismo naveli deskriptor datoteke. Ako nije navedeno, bash će koristiti stdout prema zadanim postavkama.

$ echo "Hello World"> zapisnik.txt

Sljedeća naredba će preusmjeriti stderr u tekstualnu datoteku.

$ asdfadsa 2> pogreška.txt

Korištenje / dev / null

Preusmjeravanje izlaza na / dev / null

Sada smo spremni naučiti kako koristiti / dev / null. Prvo, provjerimo kako filtrirati normalni izlaz i pogreške. U sljedećoj naredbi grep će pokušati potražiti niz (zdravo, u ovom slučaju) u direktoriju “/ sys”.

$ grep -r pozdrav / sys /

Međutim, generirat će puno pogrešaka jer bez privilegija root grep ne može pristupiti velikom broju datoteka. U tom će slučaju rezultirati pogreškama "Dozvola odbijena". Sada, koristeći preusmjeravanje, možemo dobiti jasniji izlaz.

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

Izlaz izgleda puno bolje, zar ne? Ništa! U ovom slučaju, grep nema pristup velikom broju datoteka, a one kojima je dostupno nema niz "zdravo".

U sljedećem ćemo primjeru pingati Google.

$ ping google.com

Međutim, ne želimo vidjeti sve one uspješne ping rezultate. Umjesto toga, želimo se usredotočiti na pogreške samo kada ping nije mogao doći do Googlea. Kako to radimo?

$ ping google.com 1> / dev / null

Ovdje je sadržaj stdout izbacuju se u / dev / null, ostavljajući samo pogreške.

Preusmjerite sav izlaz na / dev / null

U određenim situacijama izlaz možda neće biti koristan. Korištenjem preusmjeravanja možemo sav izlaz izbaciti u prazninu.

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

Razbijmo malo ovu naredbu. Prvo, bacamo sve stdout na / dev / null. Zatim, u drugom dijelu, kažemo bashu da pošalje stderr do stdout. U ovom primjeru nema ništa za izlaz. Međutim, ako ste zbunjeni, uvijek možete provjeriti je li naredba uspješno pokrenuta.

$ echo $?

Vrijednost je 2 jer je naredba generirala puno pogrešaka.

Ako ste skloni zaboraviti deskriptor datoteke stdout i stderr, sljedeća naredba će se učiniti sasvim u redu. To je općenitiji format prethodne naredbe. Oba stdout i stderr bit će preusmjeren na / dev / null.

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

Ostali primjeri

Ovo je zanimljivo. Sjetite se alata dd? Moćan je alat za pretvaranje i kopiranje datoteka. Saznajte više o dd. Pomoću dd možemo testirati sekvencijalnu brzinu čitanja vašeg diska. Naravno, to nije točno mjerenje. Međutim, za brzi test prilično je koristan.

$ dd ako = od = / dev / null status = napredak bs = 1M iflag = izravno

Evo, koristio sam Ubuntu 18.04.4 ISO kao velika datoteka.

Slično tome, možete testirati i brzinu preuzimanja vaše internetske veze.

$ wget -O / dev / null

Završne misli

Nadamo se da dobro razumijete što je ova / dev / null datoteka. To je poseban uređaj koji se, ako se na njega napiše, odbaci, a ako se pročita s njega, pročita nulu. Pravi potencijal ove zanimljive značajke je u zanimljivim bash skriptama.

Zanima li vas bash skriptiranje? Pogledajte početni vodič za bash skriptiranje.

Uživati!

Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...
Kako snimiti i struji svoju igraću sesiju na Linuxu
U prošlosti se igranje igara smatralo samo hobijem, ali s vremenom je igračka industrija zabilježila ogroman rast u pogledu tehnologije i broja igrača...
Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...