How To use diff command in Linux Or Ubuntu Step By Step Tutorial
Inhaltsverzeichnis:
- So verwenden Sie den Befehl
diff
- Normales Format
- Kontextformat
- Einheitliches Format
- Fall ignorieren
- Fazit
diff
ist ein Befehlszeilenprogramm, mit dem Sie zwei Dateien zeilenweise vergleichen können. Es kann auch den Inhalt von Verzeichnissen vergleichen.
Der Befehl
diff
wird am häufigsten zum Erstellen eines Patches verwendet, der die Unterschiede zwischen einer oder mehreren Dateien enthält, die mit dem Befehl
patch
angewendet werden können.
So verwenden Sie den Befehl
diff
Die Syntax für den Befehl
diff
lautet wie folgt:
diff… FILES
Der Befehl
diff
kann die Ausgabe in verschiedenen Formaten anzeigen, wobei das normale, das kontextbezogene und das vereinheitlichte Format die häufigsten sind. Die Ausgabe enthält Informationen darüber, welche Zeilen in den Dateien geändert werden müssen, damit sie identisch werden. Wenn die Dateien übereinstimmen, wird keine Ausgabe erstellt.
Verwenden Sie den Umleitungsoperator, um die Befehlsausgabe in einer Datei zu speichern:
diff file1 file2 > patch
Wir verwenden die folgenden zwei Dateien, um die Funktionsweise des Befehls
diff
zu erläutern:
Ubuntu Arch Linux Debian CentOS Fedora
file2
Kubuntu Ubuntu Debian Arch Linux Centos Fedora
Normales Format
In der einfachsten Form wird beim Ausführen des Befehls
diff
für zwei Textdateien ohne Option eine Ausgabe im normalen Format erstellt:
diff file1 file2
Die Ausgabe sieht ungefähr so aus:
0a1 > Kubuntu 2d2 < Arch Linux 4c4, 5 < CentOS --- > Arch Linux > Centos
Das normale Ausgabeformat besteht aus einem oder mehreren Abschnitten, die die Unterschiede beschreiben. Jeder Abschnitt sieht folgendermaßen aus:
change-command < from-file-line… --- > to-file-line…
0a1
,
2d2
und
4c4, 5
sind Änderungsbefehle. Jeder Änderungsbefehl enthält von links nach rechts Folgendes:
- Die Zeilennummer oder der Zeilenbereich in der ersten Datei. Ein spezielles Änderungszeichen. Die Zeilennummer oder der Zeilenbereich in der zweiten Datei.
Das Änderungszeichen kann eines der folgenden sein:
-
a
- Fügen Sie die Zeilen hinzu.c
- Ändern Sie die Zeilen.d
- Löschen Sie die Zeilen.
Dem Änderungsbefehl folgen die vollständigen Zeilen, die entfernt (
<
) und der Datei hinzugefügt (
>
) werden.
Lassen Sie uns die Ausgabe erklären:
-
0a1
- Fügen Sie Zeile1
der zweiten Datei am Anfang der Datei1 (nach der Zeile0
) hinzu.-
> Kubuntu
- Die Zeile aus der zweiten Zeile, die wie oben beschrieben zur ersten Datei hinzugefügt wird.
2d2
- Löschen Sie Zeile2
in der ersten Datei. Das2
nach demd
Symbol bedeutet, dass die Zeile in der zweiten Datei in Zeile2
angezeigt wird, wenn sie nicht gelöscht wird.-
< Arch Linux
- die gelöschte Zeile.
4c4, 5
- Ersetzen Sie Zeile5
in der ersten Datei durch die Zeilen4-5
aus der zweiten Datei.-
< CentOS
- Die Zeile in der ersten zu ersetzenden Datei.---
- Trennzeichen.> Arch Linux
und> Centos
- Zeilen aus der zweiten Datei, wobei die Zeile in der ersten Datei ersetzt wird.
-
Kontextformat
Wenn das Kontextausgabeformat verwendet wird, zeigt der Befehl
diff
mehrere Kontextzeilen um die Zeilen an, die sich zwischen den Dateien unterscheiden.
Die Option
-c
weist
diff
an, Ausgaben im Kontextformat zu erzeugen:
diff -c file1 file2
*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 6 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 7 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora
Die Ausgabe beginnt mit den Namen und Zeitstempeln der verglichenen Dateien und einem oder mehreren Abschnitten, die die Unterschiede beschreiben. Jeder Abschnitt sieht folgendermaßen aus:
*************** *** from-file-line-numbers **** from-file-line… --- to-file-line-numbers ---- to-file-line…
-
from-file-line-numbers
undto-file-line-numbers
- Die Zeilennummern oder durch Kommas getrennten Zeilenbereiche in der ersten bzw. zweiten Datei.from-file-line
undto-file-line
- Die Zeilen, die sich unterscheiden, und die Kontextzeilen:- Zeilen, die mit zwei Leerzeichen beginnen, sind Kontextzeilen. Die Zeilen, die in beiden Dateien mit dem Minuszeichen (
-
) beginnen, sind die Zeilen, die nichts in der zweiten Datei entsprechen. In der zweiten Datei fehlen Zeilen. Zeilen, die mit dem Pluszeichen (+
) beginnen, sind die Zeilen, die nichts in der ersten Datei entsprechen. In der ersten Datei fehlen Zeilen. Zeilen, die mit dem Ausrufezeichen (!
) Beginnen, sind die Zeilen, die zwischen zwei Dateien geändert werden. Jede Zeilengruppe beginnt mit!
aus der ersten Datei hat eine entsprechende Übereinstimmung in der zweiten Datei.
- Zeilen, die mit zwei Leerzeichen beginnen, sind Kontextzeilen. Die Zeilen, die in beiden Dateien mit dem Minuszeichen (
Lassen Sie uns die wichtigsten Teile der Ausgabe erklären:
- In diesem Beispiel haben wir nur einen Abschnitt, der die Unterschiede beschreibt.
*** 1, 6 ****
und--- 1, 7 ----
den Bereich der Zeilen aus der ersten und zweiten Datei an, die in diesem Abschnitt enthalten sind. ZeilenUbuntu
,Debian
,Fedora
und die letzte leere Zeile sind in beiden Dateien gleich. Diese Zeilen beginnen mit doppeltem Leerzeichen.Line- Arch Linux
aus der ersten Datei entspricht nichts in der zweiten Datei. Obwohl diese Zeile auch in der zweiten Datei vorhanden ist, unterscheiden sich die Positionen. Zeile+ Kubuntu
von der zweiten Datei entspricht nichts in der ersten Datei. Zeile! CentOS
! CentOS
aus der ersten Datei und Zeilen! Arch Linux
! Arch Linux
und! CentOS
! CentOS
aus der zweiten Datei werden zwischen den Dateien geändert.
Standardmäßig ist die Anzahl der Kontextzeilen drei. Um eine andere Nummer anzugeben, verwenden Sie die Option
-C
(
--contexts
):
diff -C 1 file1 file2
*** file1 2019-11-25 21:00:26.422426523 +0100 --- file2 2019-11-25 21:00:36.342231668 +0100 *************** *** 1, 5 **** Ubuntu - Arch Linux Debian ! CentOS Fedora --- 1, 6 ---- + Kubuntu Ubuntu Debian ! Arch Linux ! Centos Fedora
Einheitliches Format
Das einheitliche Ausgabeformat ist eine verbesserte Version des Kontextformats und erzeugt eine kleinere Ausgabe.
Verwenden Sie die Option
-u
, um
diff
, die Ausgabe im einheitlichen Format zu drucken:
diff -u file1 file2
--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian -CentOS +Arch Linux +Centos Fedora
Die Ausgabe beginnt mit den Namen und Zeitstempeln der Dateien und einem oder mehreren Abschnitten, die die Unterschiede beschreiben. Jeder Abschnitt hat die folgende Form:
*************** @@ from-file-line-numbers to-file-line-numbers @@ line-from-files…
-
@@ from-file-line-numbers to-file-line-numbers @@
- Die Zeilennummer oder der Bereich der Zeilen aus der ersten und zweiten Datei in diesem Abschnitt.line-from-files
- Die Zeilen, die sich unterscheiden, und die Kontextzeilen:- Zeilen, die mit zwei Leerzeichen beginnen, sind Kontextzeilen. Die Zeilen, die in beiden Dateien gleich sind. Zeilen, die mit dem Minuszeichen (
-
) beginnen, sind die Zeilen, die aus der ersten Datei entfernt werden. Zeilen, die mit dem Pluszeichen (+
) beginnen, sind die Zeilen, die aus der ersten Datei hinzugefügt werden.
- Zeilen, die mit zwei Leerzeichen beginnen, sind Kontextzeilen. Die Zeilen, die in beiden Dateien gleich sind. Zeilen, die mit dem Minuszeichen (
Fall ignorieren
Wie Sie möglicherweise in den obigen Beispielen bemerken, unterscheidet der Befehl
diff
standardmäßig zwischen Groß- und Kleinschreibung.
Verwenden Sie die Option
-i
, um
diff
anzuweisen, Groß- und Kleinschreibung zu ignorieren:
diff -ui file1 file2
--- file1 2019-11-25 21:00:26.422426523 +0100 +++ file2 2019-11-25 21:00:36.342231668 +0100 @@ -1, 6 +1, 7 @@ +Kubuntu Ubuntu -Arch Linux Debian +Arch Linux CentOS Fedora
Fazit
Das Vergleichen von Textdateien auf Unterschiede ist eine der häufigsten Aufgaben für Linux-Systemadministratoren.
Der Befehl
diff
vergleicht Dateien zeilenweise. Für weitere Informationen geben Sie
man diff
in Ihr Terminal ein.
Befehl Chgrp unter Linux (Gruppe wechseln)
In Linux ist jede Datei einem Eigentümer und einer Gruppe zugeordnet und verfügt über Berechtigungen, die festlegen, welche Benutzer die Datei lesen, schreiben oder ausführen dürfen. Der Befehl chgrpc ändert die Gruppeneigentümerschaft für bestimmte Dateien.
Befehl Dmesg unter Linux
Das Befehlszeilendienstprogramm dmesg druckt und steuert den Kernel-Ringpuffer. Es ist nützlich, um Kernel-Boot-Meldungen zu untersuchen und Hardware-Probleme zu beheben.
Freier Befehl unter Linux
Wie viel freier RAM-Speicher habe ich auf meinem Linux-System? Der Befehl "free" gibt Auskunft über die Gesamtgröße des Arbeitsspeichers sowie über den freien und belegten Arbeitsspeicher und den Auslagerungsspeicher im System.