Hvad er / dev / null, og hvordan kan det hjælpe dig?

Hvis vi allerede har nogle forestillinger om GNU / Linux-katalogtræet, skal vi i det mindste være fortrolige med / dev / reference, som effektivt er, hvor alle filerne er relateret til hardwareenheder.

Hvis vi kigger i biblioteket / dev / vi vil se en "fil" kaldet null, men hvis vi ønsker at åbne den for at se dens indhold, vil systemet fortælle os, at det ikke er muligt, da det ikke er almindeligt indhold. Jeg har vedlagt ordfilen, fordi, som I alle ved til Linux, er alt (hardware og software) repræsenteret som en fil.

Dette er et bidrag fra Daniel Durante og bliver dermed en af ​​vinderne af vores ugentlige konkurrence: «Del hvad du ved om Linux«. Tillykke Daniel!

Hvilken enhed svarer / dev / null til?

Af praktiske formål kan du forestille dig en skraldespand, en bundløs hul eller ydre rum, hvor du kan kaste noget uden mulighed for at genvinde det (uanset hvor hårdt NASA-fyrene prøver).

Men hvis jeg allerede har kommandoer som rm, hvorfor vil jeg så have noget nyt at slette?

Fordi den måde, hvorpå begge "sorte huller" fungerer, er helt anderledes: hvordan vil du gå til at tilsidesætte standardoutputtet for en fejl i en kommando i et shell-script ved kørsel? Dette er hvor / dev / null kommer ind.

Lad os se det med et eksempel.

Vi har oprettet en fil kaldet tests indeholdende strengen "Hello World". Hvis vi vil repræsentere indholdet af den fil på kommandolinjen, kunne vi gøre det på følgende måde:

bruger @ bærbar computer: ~ $ cat test
Hej Verden

Hvis filen ikke eksisterede eller blev navngivet som tests (med en 's' i slutningen), ville vi få følgende fejl i konsollen:

bruger @ bærbar computer: ~ $ kattest
cat: tests: Filen eller biblioteket findes ikke

Hvad kunne vi gøre for at undgå fejlmeddelelsen? Nå, bare omdiriger output af kommandoen i tilfælde af fejl til en "skraldespand", det vil sige til / dev / null

Hvordan angiver vi, at det skal være i tilfælde af fejl? Her indtaster du standardindgangs-, output- og fejlværdierne for et program: STDIN, STDOUT og STDERR (som kan erstattes med henholdsvis 0, 1 og 2). På denne måde, hvis vi sætter ...

bruger @ bærbar computer: ~ $ cat tests 2> / dev / null
bruger @ bærbar computer: ~ $

... Vi ser, at fejlmeddelelsen ikke bliver produceret på konsollen.

Du skal være forsigtig, fordi syntaksen er vigtig: mellem tegnene 2 og> skal der ikke være plads. Ellers ville det give følgende:

bruger @ bærbar computer: ~ $ cat tests 2> / dev / null
cat: tests: Filen eller biblioteket findes ikke
cat: 2: Filen eller biblioteket findes ikke

I modsætning hertil vil et mellemrum mellem> og / dev / null ikke påvirke resultatet negativt.

Vi kunne også bruge fejlomlægning, for eksempel til at registrere fejl i en logfil som følger:

bruger @ bærbar computer: ~ $ cat tests 2> err.log

En anden interessant sag ville være indsamling af resultater i en anden fil, så længe der ikke opstår en fejl, som vi vil lægge:

bruger @ bærbar computer: ~ $ cat test 1> output_result 2> err.log

Endelig er det værd at sætte udtrykket «> / dev / null 2> & 1», hvor standardoutputtet og fejloutputtet kombineres, og omdirigere dem, så outputinformationen under ingen omstændigheder opnås.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Guido Ignatius Ignatius sagde han

    Ah, men et af de mest anvendte hjælpeprogrammer, som / dev / null har, mangler, hvilket tømmer filer: $ cat / dev / null> file.log På denne måde vil file.log-filen være tom. Tilføj det!

    1.    Edward H. sagde han

      Det var netop den forklaring, han ledte efter.
      Jeg støtter bevægelsen om at tilføje den =)

      Saludos!

  2.   Paul sagde han

    Hej, først og fremmest er artiklen meget god! det andet vil jeg gerne bidrage med dette link om emnet cron job i php fra Cpanel og den tredje tillykke med bloggen!

  3.   Paul sagde han

    Dejlig artikel om dev / null, hvilken skam jeg synes, jeg fejlagtigt har kommenteret det forkerte sted før! jeg undskylder

  4.   Anonymous sagde han

    tak godt bidrag

  5.   trøjer sagde han

    Hilsen Jeg får nullangreb. Jeg bruger andrirc, og jeg får en privat fra mit kaldenavn med ordet Null. 2 sekunder senere lukker programmet, jeg har læst, og fra det jeg ser, kan dette kun udføres af Shell, ikke nogen ekstern. Jeg har forsøgt at ignorere mig selv / ignorere -lrpcntikd, og intet overrasker mig, at kommandoen fortsætter med at komme. Hvis du har nogen måde at prøve at blokere for, ville jeg sætte pris på det. Skål

  6.   Sofia martinez sagde han

    Hvad sker der, når symbolet> ikke placeres, når sætningen udføres?

    Kan nogen vejlede mig, tak?

  7.   Nil sagde han

    Godmorgen, jeg har installeret Debian netinst i ACER Extensa 5620Z – 32 bit. Når installationen fra USB er færdig, og pendrevet er fjernet, så det starter fra harddisken (ikke geninstaller fra pennen), men i opstartsøjeblikket systemet spørger hun mig:
    debian login: xxxxxxxx (ok)
    Adgangskode: xxxxxxxx (ok)
    nil@debian:~$ ???? hvad er dette? Hvad skal jeg sætte der?

    Uden denne kommando kan jeg ikke fortsætte med systemstarten.
    Kan du hjælpe mig? Jeg ved ikke, hvordan jeg skal fortsætte.
    Mange tak. Med venlig hilsen.