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: 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.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Diffutils
    Textdateien miteinander vergleichen, die Unterschiede herausfinden und anzeigen, ja sogar der automatische Abgleich der Dateien – das alles bieten die Diffutils auf der Kommandozeile.
  • Zu Befehl
    Zu Vergleichen gibt es immer wieder etwas. Im Falle von Textdateien eignet sich das Kommandozeilen-Tool diff für diese Aufgabe.
  • Textdateien mit "diff" und "wdiff" vergleichen
    Mehrere Versionen derselben Datei werfen die Frage auf, ob diese sich unterscheiden – zumindest für Textdateien bringt die Shell alle Tools mit, die Sie brauchen, um diese Frage zu beantworten.
  • Spot the difference! [Update]
  • Zu Befehl
    Einfachen Text in PostScript wandeln, Quellcode übersichtlich formatiert ausdrucken, Bilddateien schnell zum Drucker schicken – all das und noch viel mehr gelingt mit a2ps auf der Kommandozeile.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.