Konsolenbasiertes Tool zum Vergleichen/Vergleichen von Dateien

Ich suche nach etwas, das ich auf einem Ubuntu-Server installieren kann und das es mir ermöglicht, den Inhalt von PHP-, Javascript-, CSS-, HTML- und anderen Nur-Text-Dateien auf präsentablere und verständlichere Weise als mit dem Standardbefehl zu vergleichen diff.

Haben müssen

  • Direkter Vergleich von Dateiinhalten, die Zeilen angeben, die sich von Datei 1 zu Datei 2 unterscheiden
  • Von der Konsole ausführen (keine Desktop-Umgebung installiert)
  • Unterstützt reine Textdateien

Würde gerne haben

  • Farben zum Hervorheben von Änderungen
  • Synchrones Scrollen (Zeilen beider Dateien bleiben nebeneinander und sichtbar, während Sie sich durch den Vergleich bewegen)
  • Die Anzeige von Änderungen innerhalb einer Zeile (z. B. ein Vergleich der Zeilen „eine Frage“ mit „dies ist eine Frage“ würde anzeigen/hervorheben, dass „dies“ der Unterschied ist, im Gegensatz zu der bloßen Angabe, dass die gesamte Zeile etwas anderes enthält )

Optimal würde ich so etwas wie die Dateivergleichsfunktion von WinMerge lieben:WinMerge

für Ubuntu, aber ich verstehe, dass möglicherweise nicht alle Funktionen für eine reine Konsolen-App möglich sind.

Antworten (3)

vimdiff

vimdiff file1 file2

Sie können es zum Beispiel auch mit Git verwenden:

git difftool --tool=vimdiff HEAD^ HEAD

vimdiff

Sie möchten also ein interaktives Diff-Tool mit sehr grundlegenden Funktionen. Die offensichtliche Antwort ist Emacs (Ubuntu: emacs), das Ediff seit etwa 20 Jahren enthält.

Öffnen Sie die beiden Dateien, die Sie vergleichen möchten, und wählen Sie im Menü „Extras → Vergleichen (Ediff) → Zwei Puffer…“. Oder wählen Sie „Extras → Vergleichen (Ediff) → Zwei Dateien…“ und geben Sie die Dateinamen ein. Sie können stattdessen den Befehl ediff-buffersoder ediff(Alias ​​von ediff-files) verwenden (drücken Sie Alt+ , geben Sie Xdann ein ediffund drücken Sie Enter). Die Hauptbefehle im Ediff-Modus sind:

  • |um zwischen der Anzeige der beiden Dateien übereinander (Standard) oder nebeneinander zu wechseln
  • num zum nächsten unterschiedlichen Zeilenblock zu wechseln
  • pum zum vorherigen anderen Zeilenblock zu wechseln
  • qum den Ediff-Modus zu verlassen
  • ?für Hilfe
  • C-x o( Ctrl+ Xdann Kleinbuchstaben O), um zwischen den drei Puffern zu navigieren (Datei 1, Datei 2 und das Ediff-Bedienfeld).

Ediff kann auch 3-Wege-Diffs durchführen, wenn Sie eine gemeinsame Vorfahrendatei haben, und kann bei Zusammenführungen helfen. Die Einträge im Menü „Extras“ sollten ausreichen, um Sie in Gang zu bringen; Einzelheiten finden Sie im Handbuch .

Emacs kann Revisionen auch automatisch aus SVN und anderen Revisionskontrollsystemen ziehen. Weitere Informationen finden Sie im Menü „Extras → Versionskontrolle“ oder im Handbuch .

Vielleicht fühlen Sie sich mit der GUI-Version von Emacs wohler. Emacs funktioniert auf allen gängigen Betriebssystemen (unter Windows verwende ich EmacsW32 ) und kann über SSH (und andere Methoden) transparent auf entfernte Dateien zugreifen. Um eine Remote-Datei über SSH zu öffnen, geben Sie /name-of-host:/path/to/fileals Dateinamen ein. Wenn Sie unter Windows PuTTY für SSH verwenden, stellen Sie sicher, dass Sie plinkinstalliert und auf Emacs installiert haben PATH, und geben (setq tramp-default-method "plink")Sie Ihre ~/.emacs. Weitere Einzelheiten finden Sie im Tramp -Handbuch.

Wer es diffaber etwas verständlicher und lesbarer haben möchte, für den gibt's colordiff- im Prinzip das gleiche wie diff, aber mit farbiger Hervorhebung.

Um einen direkten Vergleich mit diff oder colordiff zu erhalten, können Sie die -yOption hinzufügen. Sie können auch verwenden sdiff- es gibt einen etwas saubereren Side-by-Side-Vergleich aus als diffmit der -yOption (zumindest auf Fedora, auf Debian sehen sie ziemlich gleich aus, bin mir aber nicht sicher, ob das für alle gleich ist).

Es hebt Wörter hervor, die anders sind, als die ganze Zeile.

Sie können auch die Spaltenbreite des Terminals an Ihre aktuelle Breite/Spalten anpassen:

colordiff -y --width=$COLUMNS mylovelyfile1.txt mylovelyfile2.txt