Home / LinuxUser / 2004 / 03 / Zu Befehl: diff, diff3, patch

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

titel_diffutils.png

Suchbild

Zu Befehl: diff, diff3, patch

01.03.2004 Finden Sie die Unterschiede – die Programme diff und diff3 aus dem Paket diffutils helfen beim Vergleichen von Textdateien, zeigen eventuelle Abweichungen auf der Kommandozeile an und gleichen die Dateien auf Wunsch vollautomatisch an.

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:

  • diff vergleicht zwei Textdateien,
  • diff3 gibt Unterschiede zwischen drei Dateien aus,
  • sdiff führt zwei Dateien interaktiv zusammen,
  • und cmp vergleicht 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.

Abbildung 1

Abbildung 1: Mit Vim wird's bunt – die Datei "unterschiede.diff" im Editor.

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

1899 Hits
Wertung: 36 Punkte (5 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...