GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Md5sum-Befehl Binär- und Textmodus?

Die GNU md5sum Der Befehl hat zwei Modi:binär Modus und Text Modus. Ich denke, der Unterschied besteht nur darin, wie Zeilenumbruchzeichen behandelt werden? Habe ich Recht?

Unter GNU/Linux erzeugen die beiden Modi immer das gleiche Ergebnis, daher die einzige Verwendung von -b und -t Optionen ist die Angabe des Flags (* oder ) vor dem Dateinamen verwendet?

Unter welchen Umständen können die Modi zu unterschiedlichen Ergebnissen führen? Auf Windows/MacOS-Systemen? (Versionen für diese Plattformen verfügbar?)

Akzeptierte Antwort:

Unter GNU/Linux erzeugen die beiden Modi immer das gleiche Ergebnis

Ja, explizit. Von man md5sum :

Hinweis: Es gibt keinen Unterschied zwischen Binär- und Textmodusoption auf [sic] GNU-System.

Dies ist aus der md5sum Implementierung, die mit GNU Coreutils 8.21 ausgeliefert wird; Mir ist aufgefallen, dass eine ältere Version (8.12) diesen Hinweis nicht hat, aber ich nehme an, dass das trotzdem zutreffen würde.

Obwohl AFAICT md5sum ist nicht offiziell standardisiert (z. B. von POSIX), es ist auf verschiedenen Plattformen in verschiedenen Implementierungen verfügbar, und es gibt offensichtlich einige Anstrengungen, diese für eine einfache systemübergreifende Verwendung miteinander kompatibel zu machen.

In diesem Zusammenhang enthält der ISO/ANSI-C-Standard High-Level-Stream-Funktionen für den Zugriff auf Dateien. Als Teil des Standards sind diese auf jedem Betriebssystem verfügbar, das ISO C über eine gemeinsam genutzte Bibliothek oder einen Compiler implementiert. Da so ziemlich alle Betriebssysteme dies zur Verfügung haben (und selbst meistens in C geschrieben sind), ist es eine Art universelle Sprache, die verwendet wird, um potenziell sehr portable Software zu implementieren.

In Anbetracht dessen, was es tut, wäre es durchaus machbar, eine md5sum zu schreiben das würde auf jedem Betriebssystem kompilieren und funktionieren. Ich behaupte nicht, dass dies auf die GNU Coreutils-Version zutrifft, aber eine der zuvor erwähnten High-Level-Dateistreamfunktionen ist fopen() , das von ISO C vorgeschrieben wird, um ein b einzufügen Schalter, der beim Öffnen einer Datei verwendet wird, um anzuzeigen, dass sie „als Binärdatei“ geöffnet wird. Was das bedeuten oder vom System verlangen kann, ist es nicht vom Standard vorgeschrieben, muss es nur vorhanden sein, damit es auf Systemen verwendet werden kann, auf denen es einige (beliebige ) Grund dafür.

Auf Linux/POSIX/*nix-Betriebssystemen gibt es keinen solchen Grund, daher macht der Schalter nichts. Aus der POSIX-Spezifikation (eine Obermenge von ISO C) für fopen():

Das Zeichen „b“ hat keine Wirkung, ist aber für die Konformität mit dem ISO-C-Standard zulässig.

Also eine vollständig portable md5sum Die Implementierung verwendet möglicherweise die ISO-Dateistromfunktionen auf hoher Ebene, da es keine anderen Methoden für den Zugriff auf Dateien in ISO C gibt (die meisten Plattformen, einschließlich der POSIX-beanstandeten, haben auch ihre eigenen Methoden auf niedrigerer Ebene, aber die Verwendung dieser wäre nicht portierbar, weil sie sind nicht in ISO C), und es sollte auch das -b implementieren und -t Flags, um das b hinzuzufügen oder nicht hinzuzufügen Option zu fopen() wenn es die Datei liest. Auf Systemen, auf denen das bedeutungslos ist, macht es keinen Unterschied.

Verwandte:ulimit PICKLE:„Operation nicht erlaubt“ und „Befehl nicht gefunden“?

Nochmals, ich sage nicht, dass md5sum von GNU auf eine so vollständig portierbare Weise geschrieben oder von einem abgeleitet ist, aber offensichtlich versucht es, in seiner Bedienbarkeit mit einem zu übereinstimmen, das ist. Beachten Sie, dass es nicht dasselbe ist, ein Flag zu haben, das nichts tut, als das Flag nicht zu haben – im ersten Fall ist es so angegeben, dass es in Ordnung ist, aber nichts tut, während die Verwendung im letzteren Fall ein Fehler sein oder zu undefiniertem Verhalten führen kann.


Linux
  1. Awk Einzeiler und Skripte, die Ihnen beim Sortieren von Textdateien helfen

  2. Linux-Cat-Befehl:Verwendung und Beispiele

  3. Linux-Befehle – Übersicht und Beispiele

  4. Linux-Befehle:jobs, bg und fg

  5. Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

fd – Eine einfache und schnelle Alternative zum Find-Befehl

Find-Befehl in Linux (Dateien und Verzeichnisse suchen)

Grep-Befehl in Linux (Text in Dateien suchen)

Bash Exit-Befehl und Exit-Codes

Kopieren und Einfügen von Text auf dem Linux-Terminal

So finden und ersetzen Sie Text in Vim