Qu'est-ce que / dev / null et comment cela peut-il vous aider?

Si nous avons déjà quelques notions de l'arborescence de répertoires GNU / Linux, nous devrions au moins être familiers avec la référence / dev /, qui est effectivement l'endroit où tous les fichiers liés à périphériques matériels.

Si on regarde dans le répertoire / dev / nous verrons un "fichier" appelé nul, mais si nous voulons l'ouvrir pour voir son contenu, le système nous dira que ce n'est pas possible puisqu'il ne s'agit pas d'un contenu ordinaire. J'ai joint le fichier Word car, comme vous le savez tous pour Linux, tout (matériel et logiciel) est représenté sous forme de fichier.

C'est une contribution de Daniel Durante, devenant ainsi l'un des gagnants de notre concours hebdomadaire: «Partagez ce que vous savez sur Linux«. Félicitations Daniel!

À quel appareil / dev / null correspond-il?

Pour des raisons pratiques, imaginez une poubelle, une fosse sans fond ou un espace extra-atmosphérique dans lequel jeter quoi que ce soit sans possibilité de le récupérer (peu importe à quel point les gars de la NASA essaient).

Mais si j'ai déjà des commandes comme rm, pourquoi est-ce que je veux quelque chose de nouveau à supprimer?

Parce que le fonctionnement des deux «trous noirs» est complètement différent: comment feriez-vous pour remplacer la sortie standard d'une erreur dans une commande dans un script shell au moment de l'exécution? C'est là que / dev / null entre en jeu.

Voyons cela avec un exemple.

Nous avons créé un fichier appelé tests contenant la chaîne "Hello World". Si nous voulons représenter le contenu de ce fichier sur la ligne de commande, nous pourrions le faire de la manière suivante:

utilisateur @ ordinateur portable: ~ $ test de chat
Salut monde

Si le fichier n'existait pas ou était nommé comme tests (avec un `` s '' à la fin), nous obtiendrions l'erreur suivante dans la console:

user @ laptop: ~ $ tests de chat
cat: tests: le fichier ou le répertoire n'existe pas

Que pouvons-nous faire pour éviter le message d'erreur? Eh bien, redirigez simplement la sortie de la commande, en cas d'erreur, vers une "poubelle", c'est-à-dire vers / dev / null

Comment le spécifions-nous en cas d'erreur? Vous entrez ici les valeurs d'entrée, de sortie et d'erreur standard d'un programme: STDIN, STDOUT et STDERR (qui peuvent être remplacées respectivement par 0, 1 et 2). De cette façon, si nous mettons ...

utilisateur @ ordinateur portable: ~ $ cat tests 2> / dev / null
utilisateur @ ordinateur portable: ~ $

… Nous verrons que le message d'erreur ne sera pas produit sur la console.

Il faut être prudent car la syntaxe est essentielle: entre les caractères 2 et> il ne doit pas y avoir d'espace. Sinon, cela donnerait ce qui suit:

utilisateur @ ordinateur portable: ~ $ cat tests 2> / dev / null
cat: tests: le fichier ou le répertoire n'existe pas
cat: 2: le fichier ou le répertoire n'existe pas

En revanche, un espace entre> et / dev / null n'affectera pas négativement le résultat.

Nous pourrions également utiliser la redirection d'erreur, par exemple, pour capturer les erreurs dans un fichier journal comme suit:

utilisateur @ ordinateur portable: ~ $ cat tests 2> err.log

Un autre cas intéressant serait la collecte des résultats dans un autre fichier tant qu'une erreur ne se produit pas, pour laquelle nous mettrions:

utilisateur @ ordinateur portable: ~ $ cat test 1> output_result 2> err.log

Enfin, il est possible de mettre l'expression «> / dev / null 2> & 1» dans laquelle la sortie standard et la sortie d'erreur sont combinées, en les redirigeant pour qu'en aucun cas les informations de sortie ne soient obtenues.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Guido Ignace Ignace dit

    Ah, mais il manque l'un des utilitaires les plus utilisés de / dev / null, qui vide les fichiers: $ cat / dev / null> file.log De cette façon, le fichier file.log sera vide. Ajoutez-le!

    1.    Edouard H dit

      C'était précisément l'explication qu'il recherchait.
      J'appuie la motion pour l'ajouter =)

      Saludos!

  2.   Pablo dit

    Bonjour, tout d'abord l'article est très bon! la seconde je voudrais apporter quelque chose avec ce lien sur le sujet travail cron en php de Cpanel et les troisièmes félicitations pour le blog!

  3.   Pablo dit

    Bel article sur dev / null, quel dommage je pense avoir commenté par erreur au mauvais endroit avant! je m'excuse

  4.   anonyme dit

    merci bonne contribution

  5.   maillots dit

    Salutations, je reçois une attaque nulle. J'utilise andrirc et j'obtiens un privé de mon surnom avec le mot Null. 2 secondes après la fermeture du programme, j'ai lu et d'après ce que je vois, cela ne peut être fait que par le Shell, pas par quelqu'un d'extérieur. J'ai essayé de m'ignorer / ignorer -lrpcntikd et rien ne me surprend la commande n'arrête pas d'arriver. Si vous avez un moyen d'essayer de le bloquer, je vous en serais reconnaissant. À votre santé

  6.   Sophie Martinez dit

    Que se passe-t-il si lors de l'exécution de la phrase le symbole> n'est pas placé?

    Quelqu'un pourrait-il me guider s'il vous plaît?

  7.   Néant dit

    Bonjour, j'ai installé Debian netinst dans ACER Extensa 5620Z - 32 bits. Une fois l'installation depuis USB terminée et la clé USB retirée, elle démarre à partir du disque dur (ne réinstallez pas à partir du stylo) mais au moment du démarrage le système elle me demande:
    login debian : xxxxxxxx (ok)
    Mot de passe : xxxxxxxx (ok)
    néant@debian :~$ ???? qu'est-ce que c'est? Que dois-je y mettre ?

    Sans cette commande, je ne peux pas procéder au démarrage du système.
    Pouvez-vous m'aider? Je ne sais pas comment je dois continuer.
    Merci beaucoup. Avec nos meilleures salutations.