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 Zeile0
erscheinen in der zweiten Datei.< Apple
–Der Inhalt, den Sie löschen müssen (wie mit1d0
bezeichnet ).2a2,3
– In Zeile2
der ersten Datei sollten Sie (a
) Zeilen2
und3
(2,3
) aus der zweiten Datei.> Peach
,> Apple
– Der Inhalt, den Sie hinzufügen müssen (wie mit2a2,3
bezeichnet ).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. |