GNU/Linux >> Tutoriels Linux >  >> Linux

Mode binaire et texte de la commande Md5sum ?

Le GNU md5sum La commande a deux modes :binaire mode et texte mode. Je suppose que la différence réside uniquement dans la gestion des caractères de nouvelle ligne? Ai-je raison ?

Sous GNU/Linux, les deux modes produisent toujours le même résultat, donc la seule utilisation de -b et -t options est d'indiquer le drapeau (* ou ) utilisé avant le nom du fichier ?

Dans quelles circonstances les modes peuvent-ils produire des résultats différents ? Sur les systèmes Windows/MacOS ? (Versions pour ces plates-formes disponibles ?)

Réponse acceptée :

Sous GNU/Linux, les deux modes produisent toujours le même résultat

Oui, explicitement. De man md5sum :

Remarque : Il n'y a pas de différence entre les options de mode binaire et texte sur [sic] le système GNU.

Ceci provient du md5sum implémentation fournie avec GNU coreutils 8.21 ; J'ai remarqué qu'une version plus ancienne (8.12) n'a pas cet avis, mais je suppose que la même chose serait vraie de toute façon.

Bien que AFAICT md5sum n'est pas officiellement standardisé (par exemple, par POSIX), il est disponible sur diverses plates-formes dans diverses implémentations et il y a évidemment des efforts pour les rendre compatibles les unes avec les autres afin de faciliter leur utilisation sur tous les systèmes.

À cet égard, la norme ISO/ANSI C inclut des fonctions de flux de haut niveau pour accéder aux fichiers. Dans le cadre de la norme, ceux-ci sont disponibles sur tout système d'exploitation qui implémente ISO C via une bibliothèque partagée ou un compilateur. Étant donné que pratiquement tous les systèmes d'exploitation en disposent (et sont eux-mêmes le plus souvent écrits en C), il s'agit d'une sorte de langage universel utilisé pour implémenter des logiciels potentiellement très portables.

Compte tenu de ce qu'il fait, il serait tout à fait possible d'écrire un md5sum qui compilerait et fonctionnerait sur n'importe quel système d'exploitation. Je ne prétends pas que cela est vrai de la version GNU coreutils, mais l'une des fonctions de flux de fichiers de haut niveau mentionnées précédemment est fopen() , qui est mandaté par ISO C pour inclure un b commutateur utilisé lors de l'ouverture d'un fichier pour indiquer qu'il est ouvert "en tant que fichier binaire". Ce que cela peut signifier ou exiger du système ne l'est pas stipulé par la norme, il doit juste exister pour pouvoir être utilisé sur un système où il peut y en avoir (tout ) raison.

Il n'y a pas une telle raison sur les systèmes d'exploitation de style linux/POSIX/*nix, donc le commutateur ne fait rien. À partir de la spécification POSIX (un sur-ensemble d'ISO C) pour fopen() :

Le caractère 'b' n'aura aucun effet, mais est autorisé pour la conformité à la norme ISO C.

Donc, un md5sum complètement portable l'implémentation peut utiliser les fonctions de flux de fichiers de haut niveau ISO, car il n'y a pas d'autres méthodes pour accéder aux fichiers en ISO C (la plupart des plates-formes, y compris celles de la plainte POSIX, ont également leurs propres méthodes de niveau inférieur, mais leur utilisation ne serait pas portable car elles ne sont pas en ISO C), et il devrait également implémenter le -b et -t drapeaux pour ajouter ou non le b option pour fopen() lorsqu'il lit le fichier. Sur les systèmes où cela n'a pas de sens, cela ne fera aucune différence.

Connexe :ulimit PICKLE :"Opération non autorisée" et "Commande introuvable" ?

Encore une fois, je ne dis pas que le md5sum de GNU est écrit de manière totalement portable ou dérivé de celui qui l'est, mais il essaie évidemment de se conformer, dans son opérabilité, à celui qui l'est. Notez qu'avoir un indicateur qui ne fait rien n'est pas la même chose que de ne pas avoir l'indicateur - dans le premier cas, il est spécifié que tout va bien mais ne fait rien, alors que dans le dernier cas, l'utiliser pourrait être une erreur ou conduire à un comportement indéfini.


Linux
  1. Awk one-liners et scripts pour vous aider à trier les fichiers texte

  2. Commande Linux Cat :utilisation et exemples

  3. Commandes Linux - Présentation et exemples

  4. Utilisation des commandes Sed, ex et perl pour rechercher et remplacer un texte sous Linux

  5. Tutoriel vim avec des exemples de commandes

fd - Une alternative simple et rapide à la commande Find

Rechercher la commande sous Linux (Rechercher des fichiers et des répertoires)

Commande Grep sous Linux (Rechercher du texte dans des fichiers)

Commande de sortie Bash et codes de sortie

Copier et coller du texte sur le terminal Linux

Comment rechercher et remplacer du texte dans Vim