GNU/Linux >> LINUX-Kenntnisse >  >> Linux

9 diff-Befehlsbeispiele in Linux

Der Diff-Befehl in Linux wird verwendet, um den Inhalt zweier Dateien Zeile für Zeile zu vergleichen, und wenn der Unterschied gefunden wird, listet er auch die Unterschiede zusammen mit den Zeilennummern auf. Der Diff-Befehl kann auch verwendet werden, um den Inhalt zweier Verzeichnisse zu vergleichen.

Der Diff-Befehl spielt eine wichtige Rolle in Shell-Skripten, in denen wir den Befehl basierend auf der Differenz zweier Dateien ausführen möchten.

diff-Befehlssyntax

$ diff Datei1 Datei2

Die Ausgabe des diff-Befehls kann im folgenden Format erfolgen:

  • Normal (Standard)
  • Kontext
  • Vereinheitlicht

Unterschiedliche Symbole für die Ausgabe des diff-Befehls:

  • a -> zeigt an, dass etwas hinzugefügt wurde
  • c -> zeigt an, dass Text geändert wurde
  • d -> zeigt an, dass Text gelöscht wurde

Standardmäßig zeigt der diff-Befehl die Ausgabe im normalen Format an, das heißt, wenn der Inhalt zweier Dateien identisch ist, wird keine Ausgabe erzeugt, aber wir erhalten die Eingabeaufforderung.

In diesem Beitrag werden wir den Diff-Befehl mit praktischen Beispielen besprechen.

1) Zwei Dateien mit dem diff-Befehl vergleichen

Nehmen wir an, wir haben zwei Dateien aachen.txt und sydney.txt und das Folgende ist der Inhalt dieser Dateien,

[[email protected] ~]# cat aachen.txt
Linux Rocks in the open source world, followings are the linux distributions:
CentOS
Red Hat
Ubuntu Debian
Linux Mint
OpenSUSE
Fedora
[[email protected] ~]# cat sydney.txt
Linux Rocks in the open source world, followings are the linux distributions:
CentOS
Red Hat
Ubuntu Debian
Linux Mint
OpenSUSE
Fedora
[[email protected] ~]#

Vergleichen wir den Inhalt dieser Dateien mit dem Befehl diff,

[[email protected] ~]# diff aachen.txt sydney.txt
[[email protected] ~]#

Die obige Ausgabe bestätigt, dass beide Dateien identisch sind. Lassen Sie uns einige Änderungen in aachen.txt vornehmen, Open Source in „Open Source“ umschreiben.

Führen Sie nun den diff-Befehl erneut aus,

[[email protected] ~]# diff aachen.txt sydney.txt

Ausgabe,

In der Ausgabe 1c1 gibt an, dass die erste Zeile der ersten Datei geändert werden muss, damit beide Dateien identisch sind.

Machen wir die obige Änderung rückgängig und fügen eine neue Zeile „Arch Linux ” in sydeny.txt am Ende der Datei und führen Sie den diff-Befehl erneut aus,

Ausgabe des Diff-Befehls „7a8 ” gibt an, dass wir nach der 7. Zeile in der ersten Datei eine weitere Zeile hinzufügen müssen, um mit der 8. Zeile der zweiten Datei übereinzustimmen.

Lassen Sie uns „Arch Linux“ und „Fedora“ aus sydney.txt entfernen und dann versuchen, diese Dateien zu vergleichen,

Ausgabe des Diff-Befehls „7d6 ” gibt an, dass wir die 7. Zeile in der ersten Datei löschen müssen, um sie mit der zweiten Datei in Zeile 6 zu synchronisieren.

2) Diff-Befehlsausgabe im Kontextformat (-c)

Verwenden Sie die Option „-c“ im diff-Befehl, um die Ausgabe des diff-Befehls im Kontextformat zu erzeugen. Beispiel ist unten gezeigt,

[[email protected] ~]# diff -c aachen.txt sydney.txt

Die ersten beiden Zeilen stellen Dateinamen zusammen mit Datum und Uhrzeit der Änderung und drei Sternchen dar („*** “) gibt die erste Datei und das Symbol mit drei Bindestrichen an („ “) gibt die zweite Datei an.

Nur ein einzelner Bindestrich „-“ zeigt an, dass eine Zeile entfernt werden muss, und das Pluszeichen „+“ zeigt an, dass eine Zeile in der Datei hinzugefügt werden muss. Wenn eine Zeile keine Änderung erfordert, werden ihr zwei Leerzeichen vorangestellt.

3) Diff-Befehlsausgabe im einheitlichen Format (-u)

Verwenden Sie die Option „-u“ im diff-Befehl, wenn Sie die Ausgabe in einem einheitlichen Format erzeugen möchten, das Beispiel ist unten dargestellt,

[[email protected] ~]# diff -u aachen.txt sydney.txt

Die obige Ausgabe ist dem Kontextformat etwas ähnlich, aber das einheitliche Format zeigt die Ausgabe auf prägnante Weise an, hier geben die ersten beiden Zeilen die Dateinamen zusammen mit Datum und Uhrzeit der Änderung an..

Drei Bindestriche („—“) stehen für die erste Datei und drei Pluszeichen („+++“) für die zweite Datei, nach zwei @-Zeichen zeigt „-1,7“ die Zeilen aus der 1. Datei und „+1,7“ an Zeilen reichen von der 2. Datei. Außerdem zeigt das Symbol (+Core OS) an, dass diese Zeile in der ersten Datei hinzugefügt werden muss, und das Symbol Bindestrich (-Fedora) zeigt an, dass diese Zeile aus der ersten Datei entfernt werden muss, damit sie mit der zweiten Datei identisch wird.

4) Groß-/Kleinschreibung beim Vergleichen von Dateien ignorieren (-i)

Standardmäßig unterscheidet der diff-Befehl zwischen Groß- und Kleinschreibung. Wenn Sie die Groß- und Kleinschreibung im diff-Befehl ignorieren möchten, verwenden Sie die Option „-i“, das Beispiel ist unten gezeigt,

Nehmen wir an, wir haben den folgenden Inhalt von zwei Dateien

Führen Sie den diff-Befehl ohne Option aus,

[[email protected] ~]# diff aachen.txt sydney.txt
5,6c5,6
< Ubuntu debian
< Linux mint
---
> Ubuntu Debian
> Linux Mint
[[email protected] ~]#

Führen Sie nun den Befehl diff mit der Option -i aus,

[[email protected] ~]# diff -i aachen.txt sydney.txt
[[email protected] ~]#

Wie wir in der obigen Ausgabe sehen können, hat der diff-Befehl die Groß-/Kleinschreibung ignoriert, wenn wir die Option -i verwenden.

5) Berichtsdateien sind identisch mit diff-Befehl (-s)

Es kann Situationen geben, in denen wir die Dateien mit dem diff-Befehl vergleichen und wenn der Inhalt identisch ist, möchten wir die Meldung anzeigen, dass die Dateien identisch sind. Dies kann erreicht werden, indem die Option „-s“ im diff-Befehl übergeben wird,

[[email protected] ~]# cat filex.txt
DevOPs Engineer
Cloud Stack Engineer
Linux System Admin
Monitoring Team
[[email protected] ~]# cat filey.txt
DevOPs Engineer
Cloud Stack Engineer
Linux System Admin
Monitoring Team
[[email protected] ~]# diff -s filex.txt filey.txt
Files filex.txt and filey.txt are identical
[[email protected] ~]#

6) Ignorieren Sie Leerzeichen beim Vergleichen von Dateien mit diff (-b)

Nehmen wir an, wir haben zwei Dateien filea.txt und fileb.txt wo Leerzeichen nicht konsistent sind, wenn wir also den Befehl diff ohne Option verwenden, wird der Unterschied der Leerzeichen angezeigt, obwohl der Inhalt identisch ist. In solchen Fällen können wir inkonsistente Leerzeichen im Befehl diff ignorieren, indem wir die Option -b verwenden. Beispiel ist unten gezeigt,

[[email protected] ~]# cat filea.txt
Hi,  LinuxTechi is a Linux based  blog. It contains linux  HowTo's  and  Tips  &  Tricks.
[[email protected] ~]# cat fileb.txt
Hi, LinuxTechi is a Linux based blog. It contains linux HowTo's and Tips & Tricks.
[[email protected] ~]#

Vergleichen Sie die Dateien ohne Option mit dem Befehl diff,

[[email protected] ~]# diff filea.txt fileb.txt
1c1
< Hi,  LinuxTechi is a Linux based  blog. It contains linux  HowTo's  and  Tips  &  Tricks.
---
> Hi, LinuxTechi is a Linux based blog. It contains linux HowTo's and Tips & Tricks.
[[email protected] ~]#

Verwenden Sie jetzt die Option -b im obigen Diff-Befehl

[[email protected] ~]# diff -b filea.txt fileb.txt
[[email protected] ~]#

Wenn Sie alle Leerzeichen während des Vergleichs mit dem diff-Befehl ignorieren möchten, verwenden Sie „-w ”-Option

[[email protected] ~]# diff -w filea.txt fileb.txt

7) Leerzeichen am Zeilenende beim Vergleich ignorieren (-Z)

Wenn Sie während des Vergleichs das Leerzeichen am Zeilenende ignorieren möchten, verwenden Sie „-Z ”-Option

[[email protected] ~]# diff -Z filea.txt fileb.txt

Verwenden Sie „-B ” im diff-Befehl, um alle Leerzeilen während des Vergleichs zu ignorieren,

[[email protected] ~]# diff -B filea.txt fileb.txt

8) Zwei Verzeichnisse vergleichen

Nehmen wir an, wir haben zwei Verzeichnisse mit den Namen lab01 und lab02, diese haben folgende Dateien und Unterverzeichnisse

[[email protected] ~]# ls -l lab01/
total 0
-rw-r--r--. 1 root root  0 Feb  1 17:49 filea.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 fileb.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filec.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filed.txt
drwxr-xr-x. 2 root root 23 Feb  1 17:50 sitea
[[email protected] ~]# ls -l lab02/
total 0
-rw-r--r--. 1 root root  0 Feb  1 17:49 filea.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 fileb.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filec.txt
-rw-r--r--. 1 root root  0 Feb  1 17:49 filed.txt
drwxr-xr-x. 2 root root 23 Feb  1 17:50 sitea
[[email protected] ~]#

Vergleichen wir diese beiden Verzeichnisse mit dem folgenden diff-Befehl,

[[email protected] ~]# diff -qr lab01/ lab02/
[[email protected] ~]#

Wo:

  • -q -> es weist den Befehl diff an, nur zu berichten, wenn Dateien unterschiedlich sind
  • -r -> es weist den Befehl diff an, rekursiv nach Unterschieden in Unterverzeichnissen zu suchen

Da wir eine leere Ausgabe erhalten, bedeutet dies, dass beide Verzeichnisse identisch sind. Lassen Sie uns die Datei „filed.txt“ aus „lab02“ löschen und dann versuchen, sie zu vergleichen,

[[email protected] ~]# cd lab02/
[[email protected] lab02]# rm -f filed.txt
[[email protected] lab02]# cd
[[email protected] ~]# diff -qr lab01/ lab02/
Only in lab01/: filed.txt
[[email protected] ~]#

Die obige Ausgabe besagt, dass file.txt nur im Verzeichnis lab01 vorhanden ist

9) Ausgabe des diff-Befehls in eine Datei umleiten

Die Ausgabe des Diff-Befehls kann mit dem Symbol „>“ in eine Datei umgeleitet werden. Es wird sehr nützlich in Shell-Skripten, wo wir eine Aufgabe nur ausführen wollen, wenn die Ausgabe des diff-Befehls Unterschiede enthält.

[[email protected] ~]# diff aachen.txt sydney.txt
9,10d8
< SLES
< Puppy Linux
[[email protected] ~]# diff aachen.txt sydney.txt  > diff.txt
[[email protected] ~]# cat diff.txt
9,10d8
< SLES
< Puppy Linux
[[email protected] ~]#

Zusätzliches Beispiel

Zwei Dateien auf dem Terminal nebeneinander vergleichen

Wenn wir die Option '-y' verwenden, während wir zwei Dateien mit dem Befehl diff vergleichen, werden beide Dateien im Terminal nebeneinander angezeigt.

[[email protected] ~]# diff -y /etc/fstab /tmp/fstab

Ausgabe

Die obige Ausgabe zeigt deutlich den Unterschied zwischen zwei Dateien.

Das ist alles aus diesem Artikel, ich hoffe, Sie haben jetzt ein besseres Verständnis des Diff-Befehls, indem Sie die obigen Beispiele durchgehen. Bitte zögern Sie nicht, Ihr Feedback und Ihre Kommentare zu teilen.

Auch lesen :16 Echo-Befehlsbeispiele unter Linux

Auch lesen8 Head-Befehlsbeispiele in Linux


Linux
  1. 7 Beispiele für Linux-df-Befehle

  2. 8 Linux TR-Befehlsbeispiele

  3. rm-Befehlsbeispiele unter Linux

  4. ps-Befehlsbeispiele in Linux

  5. diff-Befehlsbeispiele in Linux

9 Beispiele für tee-Befehle unter Linux

Linux-IP-Befehl mit Beispielen

Diff-Befehl unter Linux

15 Linux-PS-Befehl mit Beispielen

Beispiele für Linux-Diff-Befehle

id-Befehlsbeispiele in Linux