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