Zu Befehl
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
Wer Konfigurationsdateien und andere ASCII-Texte häufig bearbeitet und die alten Versionen aufbewahrt, erwirbt so mit der Zeit eine Sammlung sehr ähnlicher Dateien. Da sind Tools gefragt, die schnell die Unterschiede zusammenfassen, – etwa die Dienstprogramme aus dem Paket diffutils:
diffvergleicht zwei Textdateien,diff3gibt Unterschiede zwischen drei Dateien aus,sdiffführt zwei Dateien interaktiv zusammen,- und
cmpvergleicht binäre Dateien.
Wir zeigen, wie Sie mit den Tools diff und diff3 oder Ihrem Lieblings-Editor den Unterschieden auf die Schliche kommen.
Differenziert
Das Programm diff vergleicht zwei Textdateien und gibt das Ergebnis auf der Konsole aus. Um einfach nur herauszufinden, ob sich zwei Dateien grundsätzlich unterscheiden, verwenden Sie den Aufruf diff -q datei1.txt datei2.txt. Das Programm meldet entweder Dateien datei1.txt und datei2.txt sind verschieden oder schweigt. Wird die Option weggelassen, erscheinen die Unterschiede auf der Konsole:
huhn@asteroid:~$ diff datei1.txt datei2.txt 4c4 < sonst viele Situationen, wo es gut ist, — > sonst etliche Situationen, wo es gut ist,
4c4 heißt, dass sich die beiden Dateien in Zeile 4 unterscheiden. Das c steht dabei für englisch "change": Zeile 4 müssten Sie verändern, um beide Dateien anzugleichen. Danach folgen eine Ausgabe der vierten Zeile der ersten Datei, eine Trennlinie --- und dann die gleiche Zeile aus der zweiten Datei.
Weiterhin zeigt diff neu hinzugekommene Abschnitte an:
5a6,10 > > Zu den diffutils gehören die Programme diff (zum > Vergleichen von Textdateien), diff3 (gibt Unterschiede > zwischen drei Dateien aus), sdiff […]
5a6,10 bedeutet, dass hinter Zeile 5 der ersten Datei die Zeilen 6--10 aus der zweiten Textdatei angehängt (a für englisch "append") werden müssen, damit beide Dateien übereinstimmen.
Gerade beim Vergleichen längerer Dateien scrollt die Ausgabe schnell aus dem Fenster heraus. Wem das zu unübersichtlich ist, der kann den Output entweder von einem Pager wie less oder more seitenweise anzeigen lassen (diff datei1.txt datei2.txt | less) oder in eine Datei umleiten (diff datei1.txt datei2.txt > unterschiede.diff). Praktisch: Der Editor Vim hat eine eigene Syntax-Highlighting-Datei für solche diff-Dateien und stellt die Unterschiede farbig dar (Abbildung 1). Daneben enthält das Vim-Paket auch das Programm Vimdiff (Kasten 1), das bis zu vier verschiedene Dateien gleichzeitig vergleichen und verarbeiten kann. Wer lieber mit (X)Emacs arbeitet, findet in Kasten 2 ein paar Hinweise zu Ediff.
Mehr Kontext
Die diff-Ausgabe wird übersichtlicher, wenn Sie den Parameter -c anhängen. Zunächst sehen Sie in der Ausgabe das Datum der letzten Änderung für beide Dateien. Die erste Datei (mit Sternchen markiert) erscheint zuerst. Jede Zeile, in der diff einen Unterschied finden, beginnt mit einem Ausrufezeichen. Zeilen, die in beiden Dateien übereinstimmen, erscheinen ohne Markierung. Erst nach der vollständigen Ausgabe der ersten Textdatei folgt die zweite (durch Striche eingeleitet) – der Vergleich kann bei längeren Dateien etwas schwieriger werden.
Die Kontext-Option sorgt dafür, dass diff neu hinzugekommene Abschnitte mit einem Pluszeichen versieht. Ein Minuszeichen hingegen weist auf nicht mehr vorhandene Zeilen hin.



