Šta je / dev / null i kako vam može pomoći?

Ako već imamo neke predodžbe o stablu direktorija GNU / Linux, trebali bismo barem biti upoznati s / dev / referencom, koja je zapravo tamo gdje su sve datoteke povezane sa hardverski uređaji.

Ako pogledamo u direktorij / dev / vidjet ćemo "datoteku" pod nazivom null, ali ako ga želimo otvoriti da bismo vidjeli njegov sadržaj, sistem će nam reći da to nije moguće jer to nije običan sadržaj. Priložio sam riječ datoteka jer, kao što svi znate za Linux, sve (hardver i softver) je predstavljeno kao datoteka.

Ovo je doprinos Daniela Durantea, postajući tako jedan od pobjednika našeg tjednog natjecanja: «Podijelite ono što znate o Linuxu«. Čestitam Daniel!

Kojem uređaju odgovara / dev / null?

Iz praktičnih razloga zamislite kantu za smeće, jamu bez dna ili svemir u koji možete baciti bilo što bez mogućnosti da se to oporavi (bez obzira na to koliko se NASA-ini muškarci trude).

Ali ako već imam naredbe poput rm, zašto želim da se nešto novo izbriše?

Jer način na koji funkcioniraju obje "crne rupe" potpuno je različit: kako biste zamijenili standardni izlaz greške u naredbi unutar skripte ljuske u vrijeme izvođenja? Ovdje dolazi / dev / null.

Pogledajmo na primjeru.

Stvorili smo datoteku nazvanu testovi koja sadrži niz "Hello World". Ako želimo predstaviti sadržaj te datoteke na naredbenom retku, mogli bismo to učiniti na sljedeći način:

user @ laptop: ~ $ mačji test
Zdravo svijete

Ako datoteka ne postoji ili je imenovana kao testovi (sa znakom 'na kraju), u konzoli bismo dobili sljedeću grešku:

user @ laptop: ~ $ mačji testovi
cat: tests: Datoteka ili direktorij ne postoji

Šta bismo mogli učiniti da izbjegnemo poruku o grešci? Pa, jednostavno preusmjerite izlaz naredbe, u slučaju greške, na "kantu za smeće", to jest na / dev / null

Kako da odredimo da bude u slučaju greške? Ovdje unosite standardne vrijednosti ulaza, izlaza i grešaka za program: STDIN, STDOUT i STDERR (koji mogu biti zamijenjeni s 0, 1 i 2). Na taj način, ako stavimo ...

user @ laptop: ~ $ mačka testira 2> / dev / null
korisnik @ laptop: ~ $

... Vidjet ćemo da se poruka o pogrešci neće pojaviti na konzoli.

Morate biti oprezni jer je sintaksa bitna: između znakova 2 i> ne smije biti razmaka. U suprotnom, dalo bi sljedeće:

user @ laptop: ~ $ mačka testira 2> / dev / null
cat: tests: Datoteka ili direktorij ne postoji
mačka: 2: Datoteka ili direktorij ne postoji

Suprotno tome, razmak između> i / dev / null neće negativno utjecati na rezultat.

Također bismo mogli koristiti preusmjeravanje grešaka, na primjer, za hvatanje grešaka u datoteku dnevnika na sljedeći način:

user @ laptop: ~ $ mačka testira 2> err.log

Još jedan zanimljiv slučaj bilo bi prikupljanje rezultata u drugoj datoteci sve dok se ne dogodi greška, za koju bismo stavili:

user @ laptop: ~ $ mačka test 1> output_result 2> err.log

Na kraju, vrijedi staviti izraz «> / dev / null 2> & 1» u kojem se kombiniraju standardni izlaz i izlaz greške, preusmjeravajući ih tako da se ni u kojem slučaju ne dobivaju izlazne informacije.


8 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Guido Ignatius Ignatius rekao je

    Ah, ali nedostaje jedan od najčešće korištenih uslužnih programa koji ima / dev / null, a to je pražnjenje datoteka: $ cat / dev / null> file.log Na taj će način datoteka file.log biti prazna. Dodajte ga!

    1.    Edward H. rekao je

      Upravo je objašnjenje tražio.
      Podržavam prijedlog za dodavanje =)

      Hvala vam!

  2.   Pablo rekao je

    Pozdrav, prije svega članak je vrlo dobar! drugi bih htio nešto dodati ovim linkom na tu temu cron posao u php-u sa Cpanela i treća čestitka za blog!

  3.   Pablo rekao je

    Lijep članak o dev / null, šteta što mislim da sam prije pogrešno prokomentirao na pogrešnom mjestu! izvinjavam se

  4.   Anónimo rekao je

    hvala dobar doprinos

  5.   dresovi rekao je

    Pozdrav, dobivam nulti napad. Koristim andrirc i od svog nadimka dobivam privatnu riječ Null. Dvije sekunde nakon zatvaranja programa sam čitao i prema onome što vidim to može učiniti samo Shell, a ne neko vanjski. Pokušao sam se zanemariti / zanemariti -lrpcntikd i ništa me ne iznenađuje, naredba stalno dolazi. Ako imate bilo koji način da to pokušate blokirati, bio bih vam zahvalan. Živjeli

  6.   Sofia martinez rekao je

    Šta se događa ako se prilikom izvršavanja rečenice simbol> ne postavi?

    Može li me neko uputiti, molim vas?

  7.   nula rekao je

    Dobro jutro, instalirao sam Debian netinst u ACER Extensa 5620Z – 32 bit.Kada se instalacija sa USB-a završi i drajv se ukloni tako da se diže sa tvrdog diska (nemojte ponovo instalirati sa olovke) već u trenutku dizanja sistem ona me pita:
    debian prijava: xxxxxxxx (ok)
    Lozinka: xxxxxxxx (u redu)
    nil@debian:~$ ???? šta je ovo? Šta da stavim tamo?

    Bez ove naredbe ne mogu nastaviti s pokretanjem sistema.
    Mozes li mi pomoci? Ne znam kako da nastavim.
    Hvala vam puno. Srdačni pozdravi.