Què és / dev / null i com pot ajudar-te?

Si ja posseïm algunes nocions de l'arbre de directoris de GNU / Linux, ha de sonar-nos a el menys la referència / dev /, que és, efectivament on es troben tots els arxius relacionats amb dispositius de maquinari.

Si mirem al directori / Dev / veurem un "arxiu" anomenat nul, Però si volem obrir-lo per veure'n el contingut, el sistema ens dirà que no és possible ja que no és de contingut ordinari. He posat entre cometes la paraula arxiu perquè, com tots sabeu per a Linux tot (maquinari i programari) es representa com un arxiu.

Aquest és una aportació de Daniel Durant, convertint-se així en un dels guanyadors de la nostra competència setmanal: «Vaig compartir el que saps sobre Linux«. Felicitacions Daniel!

A què dispositiu es correspon / dev / null?

A efectes pràctics imagina't una galleda d'escombraries, un pou sense fons o l'espai sideral a què llançar qualsevol cosa sense possibilitat de recuperar-la (per molt que s'entestin els tipus de la Nasa).

Però si ja tinc ordres com rm, ¿per què vull una altra cosa nova que esborri?

Perquè la forma de treballar de tots dos "forats negres" és completament diferent: com faries per anul·lar en temps d'execució la sortida estàndard d'un error en una ordre dins d'un script per a la shell? Aquí és on entra / dev / null.

Anem a veure-ho amb un exemple.

Hem creat un fitxer anomenat proves contenint la cadena "Hola Món". Si volem representar el contingut d'aquest fitxer en la línia d'ordres, podríem fer-ho de la següent manera:

usuari @ laptop: ~ $ cat prova
Hola Món

Si el fitxer no existís o estigués nomenat com a proves (amb una 's' a al final), obtindríem el següent error a la consola:

usuari @ laptop: ~ $ cat proves
cat: proves: No existeix el fitxer o directori

Que podríem fer per evitar el missatge d'error? Doncs senzillament redirigir la sortida de la comanda, en cas d'error, a un "galleda d'escombraries", és a dir a / dev / null

Com especifiquem que sigui en cas d'error? Aquí entren els valors estàndard d'entrada, sortida i error per a un programa: entrada estàndard, sortida estàndard i stderr (que poden ser substituïts per 0, 1 i 2 respectivament). D'aquesta manera, si posem ...

usuari @ laptop: ~ $ cat proves 2> / dev / null
usuari @ laptop: ~ $

... veurem que no es produirà a la consola el missatge d'error.

Cal anar amb compte perquè la sintaxi és fonamental: entre els caràcters 2 i> no ha d'existir espai. Si no, donaria el següent:

usuari @ laptop: ~ $ cat proves 2> / dev / null
cat: proves: No existeix el fitxer o directori
cat: 2: No existeix el fitxer o directori

En canvi, un espai entre> i / dev / null no afectarà negativament el resultat.

També podríem fer servir la redirecció d'errors, per exemple, per a la captura d'errors en un arxiu de log de la següent manera:

usuari @ laptop: ~ $ cat proves 2> err.log

Un altre cas interessant seria la recollida de resultats en un altre fitxer sempre que no es produís un error, per a això posaríem:

usuari @ laptop: ~ $ cat prova 1> resultado_de_salida 2> err.log

Finalment cal posar l'expressió «> / dev / null 2> & 1» en la qual s'uneixen la sortida estàndard i la sortida d'error redireccionándolas perquè en cap cas s'obtingui informació de sortida.


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa aquí.

8 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Guido Ignacio Ignacio va dir

    Ah però falta una de les utilitats més usades que té / dev / null, que és buidar arxius: $ cat / dev / null> file.log D'aquesta manera, l'arxiu file.log quedar buit. Agréguenlo!

    1.    Eduardo H va dir

      Precisament era l'explicació que estava buscant.
      Dono suport a la moció de afegir =)

      Salutacions!

  2.   Pau va dir

    Hola, primer que tot està molt bé l'article! el segon voldria aportar alguna cosa amb aquest enllaç sobre el tema cron job en php des Cpanel i el tercer felicitacions pel blog!

  3.   Pau va dir

    Bon article sobre dev / null, que pena crec vaig comentar per error en el lloc equivocat abans! em disculpo

  4.   anònim va dir

    gràcies bona aportació

  5.   Jers va dir

    Salutacions estic rebent atac null. Utilitzo andrirc i m'arriba un privat de mi mateix nick amb la paraula Null. 2 segon després es tanca el programa he estat llegint i pel que veig això només ho pot fer la Shell no algú extern. He tractat d'ignorar-/ ignore -lrpcntikd i Res em sorprèn segueix arribant la comanda. Si tenen alguna forma de tractar de bloquejar-s'ho agrairia. Salutacions

  6.   Sofia Martínez va dir

    Que passa si a l'executar la sentència no es col·loca el símbol>?

    Podria algú orientar-me si us plau?

  7.   Zero va dir

    Bon dia, he instal·lat Debian netinst a ACER Extensa 5620Z – 32 bit. em demana:
    debian login: xxxxxxxx (ok)
    Password: xxxxxxxx (ok)
    nil@debian:~$ ???? això què és? Què he de posar-hi?

    Sense aquesta ordre no puc avançar amb l'arrencada del sistema.
    Podeu ajudar-me? No sé com he de continuar.
    Moltes gràcies. Salutacions cordials.