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 11/2014: VIDEOS BEARBEITEN

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

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...