Hvis vi allerede har noen forestillinger om GNU / Linux-katalogtreet, bør vi i det minste være kjent med / dev / referansen, som effektivt er der alle filene relatert til maskinvareenheter.
Hvis vi ser i katalogen / dev / vi vil se en "fil" kalt null, men hvis vi vil åpne den for å se innholdet, vil systemet fortelle oss at det ikke er mulig siden det ikke er vanlig innhold. Jeg har vedlagt ordfilen fordi, som dere alle vet for Linux, blir alt (maskinvare og programvare) representert som en fil. |
Hvilken enhet tilsvarer / dev / null?
For praktiske formål, forestill deg en søppelkasse, en bunnløs grop eller det ytre rommet du kan kaste noe uten muligheten for å gjenopprette det (uansett hvor hardt gutta fra NASA prøver).
Men hvis jeg allerede har kommandoer som rm, hvorfor vil jeg at noe nytt skal slettes?
Fordi måten “sorte hull” fungerer på er helt annerledes: hvordan vil du gå for å overstyre standardutdataene for en feil i en kommando i et skallskript ved kjøretid? Dette er hvor / dev / null kommer inn.
La oss se det med et eksempel.
Vi har opprettet en fil som heter tester som inneholder strengen "Hello World". Hvis vi vil representere innholdet i filen på kommandolinjen, kan vi gjøre det på følgende måte:
bruker @ laptop: ~ $ kattest
Hei Verden
Hvis filen ikke eksisterte eller ble kalt som tester (med en 's' på slutten), ville vi få følgende feil i konsollen:
bruker @ bærbar PC: ~ $ kattetester
cat: tests: Filen eller katalogen eksisterer ikke
Hva kan vi gjøre for å unngå feilmeldingen? Vel, bare omdiriger utgangen av kommandoen, i tilfelle feil, til en "søppelkasse", det vil si til / dev / null
Hvordan spesifiserer vi at det skal være i tilfelle feil? Her skriver du inn standardinngangs-, utgangs- og feilverdiene for et program: STDIN, STDOUT og STDERR (som kan erstattes med henholdsvis 0, 1 og 2). På denne måten, hvis vi setter ...
bruker @ laptop: ~ $ cat tester 2> / dev / null
bruker @ laptop: ~ $
... Vi ser at feilmeldingen ikke blir produsert på konsollen.
Du må være forsiktig fordi syntaksen er viktig: mellom tegnene 2 og> skal det ikke være mellomrom. Ellers vil det gi følgende:
bruker @ laptop: ~ $ cat tester 2> / dev / null
cat: tests: Filen eller katalogen eksisterer ikke
cat: 2: Filen eller katalogen eksisterer ikke
Derimot vil et mellomrom mellom> og / dev / null ikke påvirke resultatet negativt.
Vi kan også bruke feilomdirigering, for eksempel for å fange feil i en loggfil som følger:
bruker @ laptop: ~ $ cat tester 2> err.log
Et annet interessant tilfelle ville være å samle inn resultater i en annen fil så lenge det ikke oppstår en feil som vi vil si:
bruker @ laptop: ~ $ cat test 1> output_result 2> err.log
Til slutt er det mulig å sette uttrykket «> / dev / null 2> & 1» der standardutgangen og feilutgangen er kombinert, og omdirigere dem slik at utgangsinformasjonen under ingen omstendigheter oppnås.
Ah, men det mangler et av de mest brukte verktøyene som / dev / null har, som tømmer filer: $ cat / dev / null> file.log På denne måten vil file.log-filen være tom. Legg til det!
Det var nettopp forklaringen han lette etter.
Jeg støtter bevegelsen om å legge den til =)
Saludos!
Hei, først og fremst er artikkelen veldig bra! det andre vil jeg bidra med noe med denne lenken om emnet cron jobb i php fra Cpanel og den tredje gratulasjonen for bloggen!
Fin artikkel om dev / null, for synd jeg tror jeg feilaktig kommenterte feil sted før! jeg beklager
takk godt bidrag
Hilsen Jeg får nullangrep. Jeg bruker andrirc og jeg får en privat fra kallenavnet mitt med ordet Null. 2 sekunder senere stenger programmet jeg har lest, og fra det jeg ser kan dette bare gjøres av Shell, ikke noen eksterne. Jeg har prøvd å ignorere meg selv / ignorere -lrpcntikd og ingenting overrasker meg kommandoen fortsetter å komme. Hvis du har noen måte å prøve å blokkere det, vil jeg sette pris på det. Jubel
Hva skjer hvis symbolet> ikke plasseres når du utfører setningen?
Kan noen veilede meg?
God morgen, jeg har installert Debian netinst i ACER Extensa 5620Z – 32 bit. Når installasjonen fra USB er fullført og pennstasjonen er fjernet slik at den starter opp fra harddisken (ikke reinstaller fra pennen), men i oppstartøyeblikket systemet spør hun meg:
debian pålogging: xxxxxxxx (ok)
Passord: xxxxxxxx (ok)
nil@debian:~$ ???? hva er dette? Hva skal jeg legge der?
Uten denne kommandoen kan jeg ikke fortsette med systemoppstarten.
Kan du hjelpe meg? Jeg vet ikke hvordan jeg skal fortsette.
Tusen takk. Vennlig hilsen.