Summe (UNIX)

Summe
Originalautor (en) Ken Thompson
Entwickler (en) AT & T Bell Laboratories
Erstveröffentlichung 3. November 1971; vor 50 Jahren
Betriebssystem Unix, Unix-artig, Inferno
Plattform Plattformübergreifend
Typ Befehl
Lizenz CoreUtils: GPLV3+

Summe ist ein Legacy -Dienstprogramm für einige verfügbar Unix und Unix-artig Betriebssysteme. Dieses Dienstprogramm gibt einen 16-Bit aus Überprüfung von jedem Argument Dateisowie die Anzahl der Anzahl von Blöcke Sie nehmen eine Festplatte an.[1] Zwei verschiedene Prüfsummenalgorithmen werden verwendet. Possix aufgegeben Summe zugunsten CKSUM.

Überblick

Das Summe Das Programm ist im Allgemeinen nur für historisches Interesse nützlich. Es ist nicht Teil von POSIX. Zwei Algorithmen sind normalerweise verfügbar: a BSD -Prüfsumme und ein SYSV -Prüfsumme. Beide sind schwächer als der bereits schwache 32-Bit-CRC, der von verwendet wird CKSUM.[2]

Das Ursprünglich Der Algorithmus für FreeBSD- und GNU -Implementierungen ist die BSD -Prüfsumme. Das Umschalten zwischen den beiden Algorithmen erfolgt über Befehlszeilenoptionen.[2][1]

Die beiden häufig verwendeten Algorithmen sind wie folgt.

Die BSD -Summe, -r in GNU -Summe und -O1 in FreeBSD CKSUM:

  • Initialisieren Sie die Prüfsumme auf 0
  • Für jedes Byte des Eingabestreams
    • Führen Sie eine 16-Bit-Bitgewise-Rechte-Rotation um 1 Bit auf der Prüfsumme durch
    • Fügen Sie das Byte in die Prüfsumme hinzu und wenden Sie Modulo 2 ^ 16 auf das Ergebnis an, wodurch sie innerhalb von 16 Bits beibehalten wird
  • Das Ergebnis ist eine 16-Bit-Prüfsumme

Der obige Algorithmus erschien in Siebte Ausgabe Unix.

Das System v sum, -s in GNU -Summe und -O2 in FreeBSD CKSUM:

  • Prüfsumme0 = Summe aller Bytes des Eingangsstrommodulo 2 ^ 32
  • Prüfsumme1 = Prüfsumme0 Modulo 2 ^ 16 + Prüfsumme0 / 2 ^ 16
  • Prüfsumme = Prüfsumme1 Modulo 2 ^ 16 + Prüfsumme1 / 2 ^ 16
  • Das Ergebnis ist eine 16-Bit

Syntax

Das Summe Dienstprogramm wird aus dem aufgerufen Befehlszeile Nach der folgenden Syntax:

sum [Option] ... [Datei] ...

Mit den möglichen Optionsparametern::

  • -r
    • verwenden BSD -Prüfsumme Algorithmus, verwenden Sie 1K -Blöcke (Niederlagen -s)
  • -s, -sysv
  • --Hilfe
    • Zeigen Sie den Hilfebildschirm an und beenden Sie
  • --Ausführung
    • Versionsinformationen ausgeben und beenden

Wenn kein Dateiparameter angegeben ist oder wenn die Datei ist -, das Standardeingabe wird als Eingabedatei verwendet.

Beispiel der Verwendung:

$ Echo Hallo> Testdata$ Summe Testdatei36978     1 

Beispiel für die Verwendung von -s in der GNU -Summe:

$ Echo Hallo> Testdata$ sum -S -Testdatei510 1 Testdatei 

Beispiel für die Verwendung von Standardeingaben - -R und Printf, um Newline zu vermeiden:

$ printf Hallo | sum -r08401     1 

Siehe auch

Verweise

  1. ^ a b Summe (1) - Handbuchseiten von GNU CoreUtils
  2. ^ a b Summe (1)- -Freebsd Allgemeine Befehle Handbuch

Externe Links

  • Summe In der Single UNIX ® Spezifikation, Version 2, 1997, OpenGroup.org - gibt der Checksumalgorithmus nicht an
  • C.4 Dienstprogramme In den offenen Gruppenbasisspezifikationen Ausgabe 7, 2018 Ausgabe, OpenGroup.org - zeigt die Summe wie entfernt an
  • Summe (1)- -Version 7 Unix Programmierer Handbuch
  • Summe (1) - Handbuchseiten von GNU CoreUtils
  • Summe (1)- -Freebsd Allgemeine Befehle Handbuch -Geben die Summenalgorithmen in Optionen -o1 und -O2 nach CKSUM an
  • Summe (1)- -Linux Benutzer Handbuch - Benutzerbefehle
  • Summe (1)- -Solaris 10 Benutzerbefehle Referenz Handbuch
  • Der Unixbaum, tuhs.org - Der Quellcode alter Versionen von Unix