|
|
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 6: |
Zeile 6: |
| * Einige Programme können auch drei Dateien vergleichen. | | * Einige Programme können auch drei Dateien vergleichen. |
| * Besagte Programme gibt es sowohl für die Kommandozeile als auch mit grafischen Oberflächen. | | * 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. | | * 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 =
| | {| class="wikitable options" |
| [[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 [http://wiki.ubuntuusers.de/diff diff], außerdem ist die Ausgabe anders strukturiert. Eine Übersicht erhält man in den [http://wiki.ubuntuusers.de/man Manpages] oder wenn man diff3 ohne Angaben von Dateinamen nur mit der Option <tt>--help</tt> aufruft.
| |
| | |
| = colordiff =
| |
| | |
| [http://colordiff.sourceforge.net/ colordiff] ist eine erweiterte Varianten von [http://wiki.ubuntuusers.de/diff 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 [http://wiki.ubuntuusers.de/VIM 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 <tt>gvim...</tt> bzw. der Option <tt>-g</tt> gestartet werden.
| |
| | |
| Folgende Einstellungen werden für das aktuelle Fenster (lokal) gesetzt:
| |
| | |
| {| class="wikitable sortable" | |
| |- | | |- |
| | | <tt>'''diff '''</tt>
| | ! Programm !! Beschreibung |
| | | <tt>on</tt>
| |
| |- | | |- |
| | | <tt>'''scrollbind '''</tt> | | | [[diff]] || |
| | | <tt>on</tt> | |
| |- | | |- |
| | | <tt>'''cursorbind '''</tt> | | | [[diff3]] || |
| | | <tt>on</tt> | |
| |- | | |- |
| | | <tt>'''scrollopt '''</tt> | | | [[colordiff]] || |
| | | += <tt>hor</tt> | |
| |- | | |- |
| | | <tt>'''wrap '''</tt> | | | [[vimdiff]] || |
| | | <tt>off</tt> | |
| |- | | |- |
| | | <tt>'''foldmethod '''</tt> | | | [[comm]] || Zeilenweise vergleichen |
| | | <tt>diff</tt> | |
| |-
| |
| | | <tt>'''foldcolumn '''</tt>
| |
| | | <tt>2</tt> (oder Wert von <tt>diffopt</tt>)
| |
| |-
| |
| |}
| |
| | |
| Mit <tt>:diffoff</tt> kann der "Diffmodus" beendet werden (Einstellungen werden nicht auf vorherige Werte zurückgesetzt).
| |
| | |
| Die verschiedenen Kommandos wie <tt>:diffupdate</tt> (Diff aktualisieren, Folds anpassen), <tt>:diffget</tt>, <tt>:diffput</tt> und Weitere finden sich in der Dokumentation unter <tt>:help diff</tt>.
| |
| | |
| = 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:
| |
| | |
| {| class="wikitable sortable"
| |
| |- | | |- |
| | | <tt>-1</tt> | | | [[cmp]] || Byteweise vergleichen |
| | | unterdrückt einzigartige Zeilen aus <tt>DATEI1</tt> | |
| |- | | |- |
| | | <tt>-2</tt> | | | [[Kompare]] || |
| | | unterdrückt einzigartige Zeilen aus <tt>DATEI2</tt> | |
| |- | | |- |
| | | <tt>-3</tt> | | | [[Meld]] || |
| | | unterdrückt gleiche Zeilen beider Dateien | |
| | |
| |- | | |- |
| | | [[Diffuse]] || |
| |} | | |} |
|
| |
| = Byteweise vergleichen (cmp) =
| |
| <tt>cmp</tt> (compare) vergleicht zwei Dateien byteweise
| |
| cmp [-cls] [-show-chars] [-verbose] [-silent] [-quiet] Datei1 [Datei2]
| |
|
| |
| * cmp ist Teil des [http://wiki.ubuntuusers.de/diff 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 <tt>cmp</tt>-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 <tt>-b</tt> welcher den Ascii-Code und das Zeichen des ersten sich unterscheidenden Bytes in der Datei anzeigt und <tt>-l</tt> 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 ==
| |
| {| class="wikitable sortable"
| |
| |-
| |
| | | <tt>'''-b, --print-bytes'''</tt>
| |
| | | Zeigt unterschiedliche Bytes
| |
| |-
| |
| | | <tt>'''-l, --print-bytes'''</tt>
| |
| | | (list) gibt die Position und den oktalen Wert aller differierenden Zeichen in einer Liste aus
| |
| |-
| |
| | | <tt>'''-s, --quiet, --silent'''</tt>
| |
| | | (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 ist ebenfalls ein grafisches Programm zum Vergleichen von Dateien. Die Funktionsweise ist ähnlich der von Kompare. Mit einem Klick auf die Pfeile neben den Unterschieden kann man die Textstelle entweder von der ersten Datei in die Zweite, oder umgekehrt übernehmen.
| |
|
| |
| Der Unterschied zu Kompare ist aber, dass die beiden Dateien in einem Texteditor dargestellt werden, und das man sie auch manuell noch weiter bearbeiten kann. Das ist sehr nützlich, z. B. für den Fall das man bestimmte Änderungen nur teilweise übernehmen möchte.
| |
|
| |
| [http://meldmerge.org/ Meld] ist ein in [http://wiki.ubuntuusers.de/Python Python] geschriebenes Werkzeug, um bis zu drei Verzeichnisse oder Dateien miteinander zu vergleichen. Hierbei werden Textdateien Zeile für Zeile analysiert. Unterschiede lassen sich hier nicht nur aufspüren, sondern auch direkt editieren.
| |
|
| |
| Das Programm kann im GNOME-Menü unter ''"Anwendungen -> Software-Entwicklung -> Meld Diff-Betrachter"'' gestartet werden.
| |
|
| |
| Nachdem das Hauptfenster erschienen ist, müssen die zu vergleichenden Verzeichnisse oder Dateien ausgewählt werden.
| |
|
| |
| Diese geschieht im Menü mit ''"File -> Neu"''. Im Dialogfenster, das sich öffnet, muss der entsprechende Reiter für Datei- oder Verzeichnisvergleich angewählt und anschließend über die Schaltflächen ''"Browse"'' die entsprechenden Pfade ausgewählt werden.
| |
|
| |
| == Vergleich zweier Verzeichnisse ==
| |
| Wenn zwei Verzeichnisse ausgewählt wurden, werden deren Unterschiede im Hauptfenster von Meld dargestellt (siehe Abbildung):* '''Foto.png''': ist in beiden Verzeichnissen enthalten. Meld färbt den Dateinamen jedoch rot ein. Dies bedeutet, dass die beiden Dateien nicht identisch sind. Eine detailliertere Betrachtung der Unterschiede ist jedoch nur bei Text- bzw. ASCII-Dateien möglich.
| |
| * '''hallo.txt''': ist ebenfalls in beiden Verzeichnissen enthalten, sie unterschieden sich jedoch voneinander. Durch einen Doppelklick auf diese Datei öffnet Meld einen neuen Reiter (Tab). In diesem Tab werden die Unterschiede der Textdateien im Detail dargestellt.
| |
| * '''man_diff.txt''': diese Dateien sind identisch
| |
| * '''test.dat''': ist nur im Zielverzeichnis vorhanden
| |
|
| |
| Es können Filter gesetzt werden (zum Beispiel, um Multimedia und/oder Binärdateien ignorieren). Eigene Filter können hinzugefügt werden.
| |
|
| |
| == Vergleich von Textdateien ==
| |
| Werden zwei Textdateien verglichen, werden deren Unterschiede im Hauptfenster von Meld dargestellt (siehe Abbildung):
| |
| * grüne Zeilen zeigen diejenigen Zeilen an, die nur in der jeweiligen Textdatei existieren
| |
| * blaue Zeilen zeigen Zeilen an, die in beiden Dateien vorhanden sind, sich aber durch einige Zeichen unterscheiden.
| |
| * gelbe Zeilen zeigen die aktuell gewählte Zeile (wo sich der Cursor befindet) an.
| |
|
| |
| Ganz links bzw. ganz rechts wird jeweils ein vertikaler Bereich angezeigt, der die aktuelle Position des Cursors in der Datei sowie die Anzahl und die relativen Postionen der Dateiunterschiede als Navigationshilfe anzeigt.
| |
|
| |
| In den Einstellungen kann man Filter setzen, welche Bereiche nicht als Unterschiede zählen sollten. So gibt zum Beispiel die Optionen ''"Whitespace"'' (Leerzeichen und verschiedene Einrückungen ignorieren) oder Kommentare ignorieren.
| |
|
| |
| Des weiteren können eigene Filter mittels reguläre Ausdrücke definiert werden. Ferner kann in den Einstellungen noch gewählt werden, ob die Dateien mit einem entsprechenden Syntax-Highlighting angezeigt oder ob Whitespaces und Zeilennummern dargestellt werden sollen.
| |
|
| |
| Durch einen Mausklick auf einen Bereich, der durch einen schwarzen seitwärts gerichteten Pfeil dargestellt wird, kann diejenige Texteinheit in das gegenüberliegende Fenster kopiert werden. Effizienter ist es oft, mit Alt + ↑ oder Alt + ↓ zum nächsten Unterschied zu gelangen und dann mit Alt + → bzw. Alt + ← den Textbereich hinüberzukopieren.
| |
|
| |
| Die zwei Dateifenster sind vollwertige Texteditorbereiche. Man kann die Dateien bearbeiten, in ihnen suchen und auch ersetzen.
| |
|
| |
| === Aufruf über ein Terminal ===
| |
| Alternativ kann Meld über ein Terminal [http://wiki.ubuntuusers.de/Meld#source-2 [2]] gestartet werden. Die zu vergleichenden Verzeichnisse oder Dateien werden als Argument übergeben:
| |
| meld /Pfad/zu/Mein_Verzeichnis_1/ /Pfad/zu/Mein_Verzeichnis_2/
| |
|
| |
| == Einstellungen ==
| |
| Über ''"Bearbeiten → Einstellungen"'' stehen vielfältige Möglichkeiten zur Anpassung an die eigenen Bedürfnisse zur Verfügung. Die nebenstehende Abbildung zeigt beispielhaft einige dieser Optionen.
| |
|
| |
| == Problembehebung ==
| |
| === Kann keine Ordner vergleichen ===
| |
| Möchte man nicht nur Dateien, sondern auch Verzeichnisse miteinander vergleichen, so ist Diffuse das falsche Werkzeug. Das Programm [http://wiki.ubuntuusers.de/Meld Meld] hingegen unterstützt diese Funktion.
| |
|
| |
| == Links ==
| |
| # [http://diffuse.sourceforge.net/index_de.html diffuse Projektseite]http://diffuse.sourceforge.net/index_de.html
| |
| # [http://diffuse.sourceforge.net/manual_de.html Handbuch]http://diffuse.sourceforge.net/manual_de.html
| |
|
| |
| = Diffuse =
| |
| Diffuse ist ein in Python geschriebenes Programm zum Vergleichen und Zusammenführen von Textdateien (vornehmlich Quellcode). Es wurde unter der GNU GPLv2 veröffentlicht und ist auch für Windows und Mac OS X erhältlich.
| |
|
| |
| Diffuse kann eine beliebige Anzahl von Dateien vergleichen und gibt dem Benutzer die Möglichkeit, die Dateien manuell zu bearbeiten. Diffuse unterstützt das Einfügen von Dateien durch "Copy & Paste" und zudem eine Vielzahl von Versionsverwaltungen (Bazaar, Git, Mercurial, Subversion, Darcs, Monotone, RCS, SVK).
| |
|
| |
| Außerdem wird die Syntax für mehr als 20 Programmiersprachen hervorgehoben.
| |
|
| |
| == Grafisch ==
| |
| Der Aufbau des Programm gliedert sich in 6 Teile. Oben, unter der Menüleiste, befindet sich die globale Werkzeugleiste. Von links nach rechts:
| |
|
| |
| * Zwei Schaltflächen zum Öffnen eines neuen Tabs zum Vergleichen von 2 oder 3 Dateien
| |
| * Schaltfläche zum neu ausrichten
| |
| * Vier Tasten zum Navigieren zwischen den Unterschieden im Dokument
| |
| * Diverse Schaltflächen zum Zusammenführen
| |
| * Schalttasten für Rückgängig oder Wiederholen von Änderungen
| |
| * Ausschneiden, Kopieren, Einfügen
| |
| * Schaltfläche zum Rücksetzen aller Änderungen
| |
| * Unter der globalen Werkzeugleiste befindet sich, falls nötig, eine Leiste mit Reitern (Tabs) der geöffneten Vergleiche.
| |
| * Unter dieser befinden sich die lokalen Werkzeugleisten eines Dokumentes mit Schaltflächen zum Öffnen, Speichern und Laden, sowie dem absoluten Pfad der Datei.
| |
| * Darunter befindet sich der wichtigste Teil, das Textfeld, welches neben Zeilennummern und Steuerzeichen noch eine komfortable Navigationsleiste an der rechten Seite bietet.
| |
| * In dieser werden je nach Änderungsart rote oder grüne Bereiche gezeichnet, so dass eine schnelle Navigation gewährleistet ist.
| |
| * Unter dem Textfeld befinden sich die lokalen Statusleisten, welche aktuelle Zeilennummer, den markierten Bereich, sowie Zeichenkodierung und Art des Zeilenumbruchs anzeigen.
| |
| * Hierunter befindet sich die globale Statusleiste, in der Tipps und weitere Informationen angezeigt werden.
| |
|
| |
| == Markierungsmodi ==
| |
| * Diffuse hat zwei Modi zum Markieren von Text.
| |
| * Mit dem Standardmodi kann man zeilenweise Textblöcke markieren, um diese dann über die einzelnen Optionen im Kontextmenü oder der Werkzeugleiste mit den entsprechenden Änderungen in den anderen Dokumenten zusammenzuführen oder von diesen zu Isolieren.
| |
| * Der zweite Modus kann über das Doppelklicken mit der linken Maustaste oder Enter drücken aktiviert werden.
| |
| * In diesem ist es möglich Text zeichenweise zu markieren und den Text ganz normal wie in jedem Texteditor zu bearbeiten.
| |
| * Um wieder in den ersten Modi zu gelangen genügt das Drücken der Esc-Taste.
| |
|
| |
| == Kommandozeile ==
| |
| Es ist möglich, Diffuse beim Start in einem Terminal-Fenster [http://wiki.ubuntuusers.de/diffuse#source-2 [2]] oder auf der Konsole einige Parameter zu übergeben. Im Folgenden wird näher darauf eingegangen.
| |
|
| |
| == Hinweis ==
| |
| * Öffnet man Diffuse mit nur einer Datei, so wird die linke Spalte frei gelassen.
| |
| * Bei mehr als zwei Dateien werden dementsprechend zwei Ansichten geöffnet.
| |
| * Für derlei Ansichten gibt es keine Beschränkungen seitens des Programms.
| |
| * Es ist möglich, 20 Dateien und mehr zu vergleichen.
| |
| * Die Ansichten werden dann jedoch (je nach Fenstergröße) sehr schmal.
| |
|
| |
| Möchte man einen Satz von drei Dateien öffnen, so kann man dies über folgenden Befehl tun:
| |
| diffuse DATEI1 DATEI2 DATEI3
| |
|
| |
| Um lokale Änderungen oder Konflikte beim Zusammenführen zu überprüfen, verwendet man den Befehl:
| |
| diffuse -m
| |
|
| |
| Zum Vergleichen spezifischer Revisionen verwendet man:
| |
| diffuse -r REVISION1 -r REVISION2 DATEI
| |
|
| |
| Eine Revision überprüft man mit folgendem Befehl:
| |
| diffuse -c rev
| |
|
| |
| [[Image:Grafik30.png]]
| |
|
| |
| = 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.
| |
|
| |
| [[Image:Grafik2.png|middle]]
| |
|
| |
|
| [[Kategorie:Linux/Datei/Vergleich]] | | [[Kategorie:Linux/Datei/Vergleich]] |