Hva er / dev / null og hvordan kan det hjelpe deg?

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.

Dette er et bidrag fra Daniel Durante, og blir dermed en av vinnerne av vår ukentlige konkurranse: «Del det du vet om Linux«. Gratulerer Daniel!

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.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Guido Ignatius Ignatius sa

    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!

    1.    Eduardo H. sa

      Det var nettopp forklaringen han lette etter.
      Jeg støtter bevegelsen om å legge den til =)

      Saludos!

  2.   Pablo sa

    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!

  3.   Pablo sa

    Fin artikkel om dev / null, for synd jeg tror jeg feilaktig kommenterte feil sted før! jeg beklager

  4.   anonym sa

    takk godt bidrag

  5.   jerseys sa

    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

  6.   Sofia martinez sa

    Hva skjer hvis symbolet> ikke plasseres når du utfører setningen?

    Kan noen veilede meg?

  7.   Nil sa

    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.