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. |
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.
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!
Upravo je objašnjenje tražio.
Podržavam prijedlog za dodavanje =)
Hvala vam!
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!
Lijep članak o dev / null, šteta što mislim da sam prije pogrešno prokomentirao na pogrešnom mjestu! izvinjavam se
hvala dobar doprinos
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
Šta se događa ako se prilikom izvršavanja rečenice simbol> ne postavi?
Može li me neko uputiti, molim vas?
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.