Linux/Datei/Vergleich

Aus Foxwiki
  • Ob Konfigurationsdateien, Quelltexte oder andere Dokumente, es kommt oft vor, dass man zwei Versionen desselben Textes miteinander vergleichen möchte.
  • Manchmal will man auch nur herausfinden ob zwei Dateien genau denselben Inhalt haben.
  • Dateien manuell miteinander zu vergleichen kann allerdings ziemlich mühselig sein.
  • Programme wie diff, Kompare oder Meld können einem diese Arbeit erleichtern.
  • Eine Anwendung ist das Vergleichen zweier Versionen einer Quelltext- oder Konfigurationsdatei, es können aber auch alle Arten von Textdateien verglichen werden.
  • Einige Programme können auch drei Dateien vergleichen.
  • Besagte Programme gibt es sowohl für die Kommandozeile als auch mit grafischen Oberflächen.
  • Besonders letztere heben die Unterschiede zwischen den Dateien oft farbig hervor. Weiterhin gibt es oft die Möglichkeit, die beiden Dateien zusammenzuführen oder auch einen Patch zu erstellen, beispielsweise mittels patch.

diff

diff

diff3

diff3 kann den Inhalt von drei Dateien gleichzeitig vergleichen. diff3 ist, ebenso wie diff, Teil der GNU Utilities. Die allgemeine Syntax lautet:

diff3 [Optionen] Datei1 Datei2 Datei3 

Anders als der Namen es vermuten lässt kennt diff3 deutlich weniger und andere Optionen als diff, außerdem ist die Ausgabe anders strukturiert. Eine Übersicht erhält man in den Manpages oder wenn man diff3 ohne Angaben von Dateinamen nur mit der Option --help aufruft.

colordiff

colordiff ist eine erweiterte Varianten von diff, bei der die Ausgabe der Unterschiede farblich hervorgehoben wird, was besonders bei größeren Dateien die Lesbarkeit erhöht. Die Syntax von colordiff ist identisch mit der von diff.

Das Programm ist nicht in der Standardinstallation enthalten kann aber nachinstalliert werden.

sudo apt-get install colordiff 

vimdiff

vimdiff ist ein Kurzbefehl, um VIM mit entsprechenden Einstellungen, zum Vergleichen von bis zu vier Dateien zu starten.

Die Syntax von vimdiff ist:

vimdiff [Optionen] [Datei1] [Datei2] [Datei3] [Datei4] 

Oder analog:

vim -d [Optionen] [Datei1] [Datei2] [Datei3] [Datei4] 

Die GUI-Variante von VIM kann mit gvim... bzw. der Option -g gestartet werden.

Folgende Einstellungen werden für das aktuelle Fenster (lokal) gesetzt:

diff on
scrollbind on
cursorbind on
scrollopt += hor
wrap off
foldmethod diff
foldcolumn 2 (oder Wert von diffopt)

Mit :diffoff kann der "Diffmodus" beendet werden (Einstellungen werden nicht auf vorherige Werte zurückgesetzt).

Die verschiedenen Kommandos wie :diffupdate (Diff aktualisieren, Folds anpassen), :diffget, :diffput und Weitere finden sich in der Dokumentation unter :help diff.

Zeilenweise vergleichen (comm)

Comm vergleicht zeilenweise sortierte Dateien. Das von Richard Stallman und David MacKenzie geschriebene Programm gehört zu den GNU-Standard-Werkzeugen.

comm [OPTIONEN] DATEI1 DATEI2 

Beispiel

comm -1 -3 ~/text1 ~/text2 
  • Ohne die Angabe von Optionen wird eine Ausgabe mit drei Spalten erzeugt. Die erste Spalte enthält Einträge, die nur in der ersten Datei vorkommen, die zweite Spalte enthält die Einträge, die nur in der zweiten Datei existieren und die dritte Zeile enthält die Zeilen, die in beiden Dateien zu finden sind.
  • Die ersten beiden Spalten enthalten also "einzigartige" Zeilen einer Datei, die dritte Spalte hingegen "gleiche" Zeilen aus beiden Dateien.
  • Jede der drei Spalten kann über die folgenden Optionen in der Ausgabe unterdrückt werden:
-1 unterdrückt einzigartige Zeilen aus DATEI1
-2 unterdrückt einzigartige Zeilen aus DATEI2
-3 unterdrückt gleiche Zeilen beider Dateien

Byteweise vergleichen (cmp)

cmp (compare) vergleicht zwei Dateien byteweise

cmp [-cls] [-show-chars] [-verbose] [-silent] [-quiet] Datei1 [Datei2] 
  • cmp ist Teil des diff Paketes und zeigt ab dem wievielten Byte sich zwei Dateien voneinander unterscheiden und ist somit zum Beispiel nützlich um Binär-Dateien zu vergleichen.
  • Wenn Sie anstelle eines der beiden Dateinamen ein Minuszeichen`-' angegeben, liest das cmp-Kommando die Vergleichsdaten von der Standardeingabe.
  • Wird nur eine Datei benannt, so wird anstelle der zweiten ebenfalls von der Standardeingabe gelesen.
  • Einige nützliche Parameter sind -b welcher den Ascii-Code und das Zeichen des ersten sich unterscheidenden Bytes in der Datei anzeigt und -l welches den Ascii-Code sämtlicher sich unterscheidender Bytes anzeigt.
  • Wenn man beide Parameter zusammen benutzt, bekommt man eine Liste mit allen sich unterscheidenden Bytes, ihrer Stelle innerhalb der Datei, ihrem Ascii-Code und ihrem eigentlichen Zeichen.

Anwendung

cat datei1
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
cat datei2 
Lorem Gabel dolor sit amet, consectetuer adipiscing elit.
cmp datei1 datei2 
datei1 datei2 differieren: Byte 7, Zeile 1.
cmp -b datei1 datei2 
datei1 datei2 differieren: Zeichen 7, Zeile 1 ist 151 i 107 G
cmp -l datei1 datei2 
 7 151 107
 8 160 141
 9 163 142
10 165 145
11 155 154
cmp -l -b datei1 datei2 
 7 151 i    107 G
 8 160 p    141 a
 9 163 s    142 b
10 165 u    145 e
11 155 m    154 l

Optionen

-b, --print-bytes Zeigt unterschiedliche Bytes
-l, --print-bytes (list) gibt die Position und den oktalen Wert aller differierenden Zeichen in einer Liste aus
-s, --quiet, --silent (silent) gibt nichts auf die Standardausgabe; der Status ist 0 (wahr), wenn die Dateien übereinstimmen und 1 (falsch), wenn sie sich unterscheiden

Kompare

  • KDE-Benutzer können auch das Programm Kompare verwenden um zwei Dateien miteinander zu vergleichen.
  • Kompare zeigt beide Dateien nebeneinander an, Unterschiede werden farblich hervorgehoben.
  • Text mit rotem Hintergrund muss verändert werden, solcher mit blauem Hintergrund muss hinzugefügt, und solcher mit grünem Hintergrund muss entfernt werden, damit die zweite Datei der ersten entspricht.
  • Es ist auch möglich einzelne oder alle Abweichungen zu übernehmen, bzw. die Texte manuell zusammenzuführen.

Meld

Meld

Diffuse

Diffuse

BeeDiff

  • BeeDiff ist ein Programm mit grafischer Oberfläche zum Vergleich und zusammenführen von Dateien.
  • BeeDiff zweigt zwei Dateien nebeneinander und hebt Unterschiede farblich hervor.
  • Operation buttons (such as merge and remove) are located directly inside the compared texts in appropriate positions.
  • Das Programm ist benutzerfreundlich, einfach und effizient.

Datei:Grafik2.png