Einführung
Der Linux-diff Der Befehl wird verwendet, um zwei Dateien Zeile für Zeile zu vergleichen und den Unterschied zwischen ihnen anzuzeigen. Dieses Befehlszeilendienstprogramm listet Änderungen auf, die Sie anwenden müssen, um die Dateien identisch zu machen.
Lesen Sie weiter, um mehr über diff zu erfahren Befehl und seine Optionen mit leicht verständlichen Beispielen.
diff-Syntax
Die Syntax für die Verwendung von diff Befehl ist:
diff [option] file1 file2 Ausgabesyntax
Beim Arbeiten mit diff , ist es entscheidend zu wissen, wie die Ausgabe zu interpretieren ist, die aus Folgendem besteht:
- Ausgabe beginnend mit
<bezieht sich auf den Inhalt in der ersten Datei. - Ausgabe beginnend mit
>bezieht sich auf den Inhalt in der zweiten Datei. - Zeilennummern, die der ersten Datei entsprechen.
- Ein besonderes Symbol. Spezielle Symbole zeigen an, wie die erste Datei bearbeitet werden muss, damit sie mit der zweiten Datei übereinstimmt. Die Ausgabe kann Folgendes anzeigen:
a(hinzufügen)c(ändern)d(löschen)
- Zeilennummern, die der zweiten Datei entsprechen.
diff-Beispiel
Um zu zeigen, wie der diff funktioniert, haben wir zwei Beispieldateien erstellt und deren Inhalt verglichen.
Zwei Beispieldateien erstellen
1. Erstellen Sie zunächst mit dem Terminal eine Linux-Datei mit dem Namen example1.txt . Wir verwenden den Nano-Texteditor, aber Sie können einen Texteditor Ihrer Wahl verwenden.
sudo nano example1.txt 2. Nachdem der Texteditor die Datei erstellt und geöffnet hat, fügen Sie ihr die folgenden Zeilen hinzu:
Apple
Orange
Banana
Watermelon
Chery 3. Speichern und beenden Sie die Datei – halten Sie Strg gedrückt + X und bestätigen Sie mit Y .
4. Als nächstes erstellen Sie eine example2.txt Datei durch Ausführen von:
sudo nano example2.txt 5. Fügen Sie der Datei folgenden Inhalt hinzu:
Orange
Peach
Apple
Banana
Melon
Cherry 6. Speichern Sie die Änderungen und beenden Sie.
Vergleichen Sie die Dateien mit dem diff-Befehl
1. Wenn die beiden Beispieldateien vorhanden sind, verwenden Sie diff Befehl, um zu sehen, wie sie sich unterscheiden und wie man sie identisch macht:
diff example1.txt example2.txt Die Ausgabe enthält Anweisungen zum Ändern der ersten Datei, sodass sie denselben Inhalt wie in example2.txt hat . Schauen wir uns die Ausgabe für die Beispieldateien an und entschlüsseln die Anweisungen.

1d0– Die erste Zeile (1) aus der ersten Datei gelöscht werden (d). Wenn nicht, würde es in Zeile0erscheinen in der zweiten Datei.< Apple–Der Inhalt, den Sie löschen müssen (wie mit1d0bezeichnet ).2a2,3– In Zeile2der ersten Datei sollten Sie (a) Zeilen2und3(2,3) aus der zweiten Datei.> Peach,> Apple– Der Inhalt, den Sie hinzufügen müssen (wie mit2a2,3bezeichnet ).4c5– Die vierte Zeile (4) aus der ersten Datei geändert werden (c) bis zur fünften Zeile (5) aus der zweiten Datei.< Watermelon– Den Inhalt, den Sie ändern müssen.> Melon– Was Sie ändern müssen.
Diff-Optionen
Ohne zusätzliche Optionen diff zeigt die Ausgabe im Standardformat an. Es gibt Möglichkeiten, diese Ausgabe zu ändern, um sie verständlicher oder für Ihren Anwendungsfall anwendbar zu machen. Lesen Sie weiter, um mehr über diff zu erfahren Befehlsoptionen.
-c Option
Das Kontextformat ist ein diff Option des Befehlszeilendienstprogramms, die mehrere Kontextzeilen um die Zeilen herum ausgibt, die sich unterscheiden.
Um den Unterschied zwischen den Dateien in Kontextform anzuzeigen, verwenden Sie den Befehl:
diff -c file1 file2 Sehen Sie sich die Ausgabe für die Beispieldateien im Kontextformular im Bild unten an.
Zeilen mit Informationen zur ersten Datei beginnen mit *** , während Zeilen, die die zweite Datei angeben, mit --- beginnen .
Die ersten beiden Zeilen zeigen den Namen und Zeitstempel beider Dateien:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
**************** - wird nur als Trennzeichen verwendet.
Bevor die Zeilen aus jeder Datei aufgelistet werden, beginnt die Ausgabe mit dem Zeilenbereich der Dateien:
*** 1,5 ****
--- 1,6 ---- Die restlichen Zeilen listen den Inhalt der Dateien auf. Der Anfang jeder Zeile gibt an, wie example1.txt geändert werden kann um es gleich zu machen wie example2.txt . Beginnt die Zeile mit:
- (minus) – es muss aus der ersten Datei gelöscht werden.
+ (plus) – es muss der ersten Datei hinzugefügt werden.
! (Ausrufezeichen) – es muss in die entsprechende Zeile aus der zweiten Datei geändert werden.
Wenn kein Symbol vorhanden ist, bleibt die Zeile gleich.
Daher sollten Sie im obigen Beispiel Apple löschen Ersetzen Sie in der ersten Zeile Watermelon mit Melon in Zeile vier und fügen Sie Peach hinzu und Apple zu den Zeilen zwei und drei.
-u Option
Das vereinheitlichte Format ist eine Option, die Sie hinzufügen können, um die Ausgabe ohne redundante Kontextzeilen anzuzeigen. Verwenden Sie dazu den Befehl:
diff -u file1 file2 Sehen wir uns nun die Ausgabe für die Beispieldateien im einheitlichen Format an:
Zeilen mit Informationen zur ersten Datei beginnen mit --- , während Zeilen, die die zweite Datei angeben, mit +++ beginnen .
Die ersten beiden Zeilen zeigen den Namen und Zeitstempel beider Dateien:
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@ - zeigt den Zeilenbereich für beide Dateien an.
Die Zeilen unten zeigen den Inhalt der Dateien und wie example1.txt geändert werden kann um es mit example2.txt identisch zu machen . Wenn die Zeile beginnt mit:
- (minus) – es muss aus der ersten Datei gelöscht werden.
+ (plus) – es muss der ersten Datei hinzugefügt werden.
Wenn kein Symbol vorhanden ist, bleibt die Zeile gleich.
Im obigen Beispiel weist die Ausgabe an, dass Apple und Watermelon entfernt werden sollte, während Peach , Apple , und Melon sollte hinzugefügt werden.
-i-Option
Standardmäßig diff unterscheidet zwischen Groß- und Kleinschreibung. Wenn Sie möchten, dass die Groß-/Kleinschreibung ignoriert wird, fügen Sie -i hinzu Option zum Befehl:
diff -i file1 file2 Wenn wir zum Beispiel eine Datei mit den folgenden Zeilen erstellen:
Apple
Orange
Banana
Watermelon
Cherry Und noch eine Datei mit dem Inhalt:
Apple
orange
Banana
watermelon
Cherry Die Ausgabe ohne zusätzliche Optionen zeigt, dass es Unterschiede zwischen den Dateien gibt, und gibt Anweisungen, wie sie geändert werden können.
Wenn Sie jedoch das -i hinzufügen Option gibt es keine Ausgabe, da der Befehl keine Unterschiede erkennt.
--Versionsoption
So überprüfen Sie die Version von diff auf Ihrem System ausgeführt wird, führen Sie den folgenden Befehl aus:
diff --version
--Hilfe-Option
Um eine Zusammenfassung von diff auszugeben Verwendungslauf:
diff --help Andere Diff-Optionen
Andere Optionen, die sich diff Unterstützt werden:
-a / --text | Dateien als Text anzeigen und Zeile für Zeile vergleichen. |
-b / --ignore-space-change | Leerzeichen beim Vergleichen von Dateien ignorieren. |
-B / --ignore-blank-lines<code> | Leerzeilen beim Vergleichen von Dateien ignorieren. |
--binary | Daten im Binärmodus vergleichen und schreiben. |
-d --minimal | Ändern Sie den Algorithmus (z. B. um weniger Änderungen zu finden). |
-e / --ed | Ausgabe zu einem gültigen ed machen Skript. |
-E / --ignore-tab-expansion | Tabulatorerweiterung beim Vergleichen von Dateien ignorieren. |
-l / --paginate | Führen Sie die Ausgabe über pr aus um es zu paginieren. |
-N / --new-file | Eine fehlende Datei als vorhanden, aber leer behandeln. |
-q / --brief | Ausgabe, ob sich Dateien unterscheiden, ohne Angabe von Details. |
-s / --report-identical-files | Ausgabe, wenn die Dateien identisch sind. |
-w / --ignore-all-space | Leerraum beim Vergleichen von Dateien ignorieren. |