[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] Programme zum Vergleichen von Textdateien gehören zum Handwerkszeug eines jeden Programmierers, wäre diese Aufgabe doch ohne die kleinen Helferlein ungleich mühsamer. Hauptanwendung ist normalerweise das Vergleichen zweier Versionen einer Quelltext- oder Konfigurationsdatei. Es können aber natürlich 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 [wikipedia:Patch_(Software):Patch] zu erstellen, beispielsweise mittels [:patch:]. Es besteht auch die Möglichkeit, Vergleichswerkzeuge im [:Dateimanager:] zu integrieren (z.B. bei [:Nautilus#Erweiterungen:]). = Grafische Oberflächen = Unter anderem sind die folgenden Programme in den offiziellen Paketquellen enthalten [1]: {{{#!vorlage Tabelle <-3 tablestyle="width: 98%;" rowclass="titel"> Vergleich-Übersicht +++ Name Paketname kurze Beschreibung +++ [:diffuse:] '''diffuse''' (''universe'') für GNOME, unterstützt Syntaxhervorhebung, siehe auch [sourceforge2:Diffuse:] {de} +++ [:Meld:] '''meld''' (''universe'') für GNOME, siehe auch [sourceforge2:Meld:] {en} +++ [wikipedia:Kompare:] '''kompare''' (''universe'') für KDE4, kann "nur" zwei Dateien vergleichen, rekursiver Vergleich von Verzeichnissen möglich +++ [sourceforge:tkdiff:] {en} '''tkdiff''' (''universe'') Grafische Oberfläche für [:diff:], Unterstützt wird dabei CVS, RCS und SCCS +++ [http://www.vim.org/ gvimdiff] {en} '''vim-gtk''' (''universe'') grafisches [:VIM:] mit entsprechend gesetzten Diffoptionen +++ [:xxdiff:] '''xxdiff''' (''universe'') siehe auch [http://furius.ca/xxdiff/ xxdiff] {en} }}} = Kommandozeile = [[Anker(comm)]] == comm == Mit comm kann man [:sort:zeilenweise sortierte Dateien] vergleichen. Das von Richard Stallman und David MacKenzie geschriebene Programm gehört zu den GNU-Standard-Werkzeugen. {{{#!vorlage Befehl comm [OPTIONEN] DATEI1 DATEI2 }}} Beispiel: {{{#!vorlage Befehl 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: {{{#!vorlage Tabelle Option Wirkung +++ `-1` unterdrückt einzigartige Zeilen aus `DATEI1` +++ `-2` unterdrückt einzigartige Zeilen aus `DATEI2` +++ `-3` unterdrückt gleiche Zeilen beider Dateien }}} == diff == ''diff'' ist das Standardprogramm auf der Kommandozeile zum Vergleichen des Inhalts von zwei Dateien. Näheres dazu steht im Wikiartikel [:diff:]. === diff3 === ''diff3'' kann den Inhalt von drei Dateien gleichzeitig vergleichen. diff3 ist, ebenso wie diff, Teil der ''GNU Utilities''. Die allgemeine Syntax lautet: {{{#!vorlage Befehl 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 [:man:Manpages] oder wenn man ''diff3'' ohne Angaben von Dateinamen nur mit der Option `--help` aufruft. == colordiff == [sourceforge2:colordiff:] {en} 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 über das Paket {{{#!vorlage Paketinstallation colordiff, universe }}} nachinstalliert werden [1]. == icdiff == [https://www.jefftk.com/icdiff icdiff] {en} hebt die Unterschiede auch farblich hervor, wie bei '''colordiff''', stellt die Unterschiede jedoch im Kontext und nebeneinander dar. Es ist besonders dann hilfreich, wenn man kleine Änderungen finden möchte. Das Programm ist nicht in der Standardinstallation enthalten, kann aber über das Paket {{{#!vorlage Paketinstallation icdiff, universe }}} nachinstalliert werden. == cmp == ''cmp'' ist Teil des [:diff:] Paketes und somit genau wie ''diff'' bei Ubuntu bereits standardmäßig installiert. Im Gegensatz zu ''diff'' zeigt ''cmp'', ab dem wievielten Byte sich zwei Dateien voneinander unterscheiden, und ist somit zum Beispiel nützlich, um Binär-Dateien zu vergleichen. Die Syntax von cmp ist: {{{#!vorlage Befehl cmp [datei1] [datei2] }}} 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 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. Beispiel: {{{#!vorlage Befehl cat datei1 }}} {{{ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. }}} {{{#!vorlage Befehl cat datei2 }}} {{{ Lorem Gabel dolor sit amet, consectetuer adipiscing elit. }}} {{{#!vorlage Befehl cmp datei1 datei2 }}} {{{ datei1 datei2 differieren: Byte 7, Zeile 1. }}} {{{#!vorlage Befehl cmp -b datei1 datei2 }}} {{{ datei1 datei2 differieren: Zeichen 7, Zeile 1 ist 151 i 107 G }}} {{{#!vorlage Befehl cmp -l datei1 datei2 }}} {{{ 7 151 107 8 160 141 9 163 142 10 165 145 11 155 154 }}} {{{#!vorlage Befehl 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 }}} == vimdiff == vimdiff ist ein Kurzbefehl, um [:VIM:] mit entsprechenden Einstellungen zum Vergleichen von bis zu vier Dateien zu starten. Die Syntax von vimdiff ist: {{{#!vorlage Befehl vimdiff [Optionen] [Datei1] [Datei2] [Datei3] [Datei4] }}} Oder analog: {{{#!vorlage Befehl 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: {{{#!vorlage Tabelle <-2 rowclass="titel"> VIM-Einstellungen für vimdiff +++ Einstellung Wert +++ `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`. = Links = * [http://www.scootersoftware.com/ Beyond Compare] {en} - kommerzielles Programm * [:Programmierung:] {Übersicht} Werkzeuge für Entwickler # tag: Programmierung, Übersicht