Diff
aus Wikipedia, der freien Enzyklopädie
![]() |
Der korrekte Titel dieses Artikels lautet „diff“. Diese Schreibweise ist aufgrund technischer Einschränkungen nicht möglich. |
diff
ist ein Unix-Programm, das die Unterschiede zwischen zwei Textdateien synoptisch ausgibt.
Die Ausgabe des Programms wird oft mit demselben Namen wie das Programm selbst als diff bezeichnet. Es wird auf der Kommandozeile mit den Namen von zwei Textdateien als Parameter ausgeführt:
$ diff erstedatei.txt zweitedatei.txt
Die ersten Versionen des Programms wurden programmiert, um Zeilen von Textdateien zu vergleichen. Seit 1980 unterstützt diff auch Binärdateien.
Im vereinheitlichten Format (unified diff) wird jede Zeile, die nur in der ersten Datei vorkommt, mit einem Minuszeichen gekennzeichnet, jede Zeile, die nur in der zweiten Datei vorkommt, wird mit einem Pluszeichen gekennzeichnet. Alle anderen Zeilen werden durch ein Leerzeichen gekennzeichnet.
Zeilen, die mit drei Pluszeichen gekennzeichnet werden, zeigen die Anzahl der Zeilen in jedem Stück, die Dateinamen, und wo in der Datei diese zu finden sind.
Die Ausgabe von diff wird oft als Eingabe für patch verwendet.
Inhaltsverzeichnis |
[Bearbeiten] Geschichte
Das diff-Programm wurde in den frühen 1970er Jahren auf dem Unix-Betriebssystem von AT&T Bell Labs in Murray Hill, New Jersey, USA entwickelt. Die endgültige Version, die zu diesem sehr frühen Unix-System gehörte, wurde vollständig von Douglas McIlroy geschrieben. Diese Untersuchungen wurden 1976 in einem Dokument veröffentlicht, das von James W. Hunt mitverfasst wurde, welcher auch eine der anfänglichen Versionen von diff schrieb.
McIlroys Arbeit wurde beeinflusst von Steve Johnsons Vergleichs-Programm auf GECOS und Mike Lesks proof-Programm, welches wie diff auch auf Unix entstanden ist. Proof produzierte Zeile-für-Zeile-Änderungen wie diff und verwendete dafür Spitze-Klammern (">" und "<"), um Zeilen-Einfügungen und Zeilen-Entfernungen in der Ausgabe des Programms darzustellen. Die heuristische Methode, die diese Programme verwendeten, galt als unzuverlässig. Die potentielle Brauchbarkeit eines diff-Tools inspirierte McIlroy, ein neues, robusteres Programm zu entwickeln, welches viele Anwendungsmöglichkeiten hatte, aber trotzdem eine gute Performance in den Prozessor- und Speicher-Limits der PDP-11-Hardware lieferte. Sein Erfolg war ein Ergebnis der Zusammenarbeit mit den Leuten von Bell Labs, inklusive Alfred V. Aho, Elliot Pinson, Jeffrey Ullman und Harold S. Stone.
[Bearbeiten] Freie Softwareimplementierungen
Das GNU-Projekt stellt eine Implementierung von diff (und diff3) im Paket diffutils (englisch) zur Verfügung. Dort findet sich auch eine sehr umfangreiche Dokumentation zum Befehl.
Etliche Tools, die auf verschiedenen Plattformen laufen, basieren auf der GNU diffutils Engine und stellen ein graphisches Frontend für die selben Informationen dar. Einige dieser Programme können Dateien auch bearbeiten und zusammenführen. Diese Liste enthält einige der freien Tools in alphabetischer Reihenfolge.
- CSDiff (englisch, Freeware für Windows)
- Meld (englisch, Skript für Linux, erfordert gnome und python)
- KDiff3 (englisch, Open Source für Windows, Linux, Unix, MAC)
- Kompare (Open Source für Linux)
- tkdiff (englisch, Open Source für Windows und Linux)
- xxdiff (englisch, Open Source für Linux/OpenBSD)
- WinMerge (englisch, Open Source für Windows)
- DiffDaff (deutsch, Freeware für Windows)
[Bearbeiten] Siehe auch
[Bearbeiten] Literaturnachweis
- Hunt, James W. und McIlroy, M. Douglas, "An Algorithm for Differential File Comparison," 41, Computing Science Technical Report, Bell Laboratories, June 1976. [1] (englisch)
- "Comparing and Merging Files with GNU Diff and Patch", von David MacKenzie, Paul Eggert, und Richard Stallman (ISBN 0954161750) [2] (englisch)
- E. Myers, "An O(ND) Difference Algorithm and Its Variations," Algorithmica 1, 2 (1986), 251-266.
- Eine gewöhnliche Implementierung des Myers SES/LCS Algorithmus [3] (englisch)