diff [OPTIONEN] DATEI1 DATEI2
Optionen | |
-b | Betrachtet mehrfache Leerzeichen und Leerzeilen als einfache Leerzeichen bzw. Leerzeilen |
-c | Ausgabe als 'Context Diffs' |
-e | Ausgabe als Skript für den Befehl ed |
-r | Vergleicht den Inhalt zweier Verzeichnisbäume |
-u | Ausgabe als 'Unified Diffs' |
-w | Ignoriert Leerzeichen und Leerzeilen ganz |
Die Ausgabe von diff besteht aus sogenannten 'hunks', was man frei als 'Stücke' übersetzen kann. Ein Hunk besteht aus bis zu vier Teilen: einer Informationszeile, dem alten Text, einer Trennzeile und dem neuen Text. Beim Einfügen und Löschen von Zeilen fehlt die alte oder neue Textinformation und die dann überflüssige Trennzeile fällt auch weg.
In der Informationszeile steht, an welcher Stelle in der jeweiligen Datei die Änderung stattgefunden hat und welche Operationen nötig sind um die erste Eingabedatei DATEI1 in die zweite Eingabedatei DATEI2 zu verwandeln. Dabei stehen die Buchstaben 'a', 'c' und 'd' für 'add' (Zeilen hinzufügen), 'change' (Zeilen verändern) und 'delete' (Zeilen löschen). Die Zahlen bzw. Zahlenbereiche links und rechts von den Buchstaben geben die betroffenen Zeilen an.
Alle Hunks zusammengenommen bilden den Patch, der die erste Datei in die zweite Datei verwandelt. Es geht auch umgekehrt, da Patches dieser Art symmetrisch sind und rückwärts angewendet werden können (`reverse patching´);
diff -b div.pl.old div.pl
Soll die Ausgabe für den Editor ed verarbeitbar sein, dann muß das Kommando lauten:
diff -be div.pl.old div.pl
Die Anwendung von diff fürs Patchen von Programmen beschreibt der Abschnitt 7.7.9.