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

Diff-Befehl in Linux mit Beispielen

Wenn es um Dateivergleiche geht, werden meist GUI-basierte Software verwendet. Wenn Sie ein Linux-Benutzer sind, sollten Sie wissen, wie man zwei Dateien über die Befehlszeile vergleicht, da dies definitiv eine schnelle Methode ist, sobald Sie sich daran gewöhnt haben.

In diesem Tutorial lernen wir anhand einiger praktischer Beispiele, wie man den diff-Befehl verwendet.

Linux diff-Befehl

Lassen Sie uns den Linux-Diff-Befehl anhand einiger praktischer Beispiele verstehen.

Angenommen, wir haben diese beiden Dateien (Datei1 und Datei2):

$ cat file1
Hi,
Hello,
How are you?
I am fine,
Thank you.
$ cat file2
Hello,
Hi,
How are you?
I am fine.

Sie können sehen, dass beide Dateien einige geringfügige Unterschiede aufweisen. Sehen wir uns nun an, wie der diff-Befehl verwendet werden kann, um diese Unterschiede hervorzuheben.

So führen Sie den Diff-Befehl aus:

$ diff file1 file2
1d0
< Hi, 2a2 > Hi,
4,5c4
< I am fine,
< Thank you.

---

> I am fine.

Sie können also sehen, dass der Befehl diff mit beiden Dateinamen als Befehlszeilenargumenten versehen wurde und die Unterschiede in der Ausgabe erzeugte. Die Ausgabe ist keineswegs leicht nachvollziehbar. Der Grund dafür ist, dass es für Computer und nicht für Menschen entwickelt wurde. Lassen Sie uns dennoch die Ausgabe Stück für Stück entschlüsseln:

HINWEIS - Die Dateien file1 und file2 werden im Folgenden als alte Datei und neue Datei angesprochen.

1d0
< Hi,

Hier bedeutet die Zeile 1d0, dass die 1. Zeile der alten Datei gelöscht werden sollte (d), um beide Dateien ab Zeile 0 zu synchronisieren. Die zu löschende Zeile in der alten Datei wird direkt darunter mit

2a2
> Hi,

Hier bedeutet die Zeile 2a2, dass die zweite Zeile aus der neuen Datei nach der zweiten Zeile der alten Datei hinzugefügt werden soll. Die hinzuzufügende Zeile wird in der nächsten Zeile der Ausgabe mit> markieren.

angezeigt
4,5c4
< I am fine,
< Thank you.

---

> I am fine.

Hier bedeutet die Zeile 4,5c4, dass die Zeilennummern von 4 bis 5 in der alten Datei nun geändert werden und durch die 4. Zeile der neuen Datei ersetzt werden sollen. Die hinzuzufügenden und zu löschenden Zeilen sind mit> bzw.

Also, zum Schluss,

  • Das erste Argument des diff-Befehls wird als alte Datei betrachtet, während das zweite Argument zu einer neuen Datei wird.
  • Ausdrücke wie 1d0 2a2, 4,5c4 können mit der Syntax [Zeilennummer oder Bereich aus alter Datei][Aktion][Zeilennummer oder Bereich aus neuer Datei] decodiert werden . Wobei „Aktion“ Anhängen, Löschen oder Ändern-also-Ersetzen sein kann.
  • Das Zeichen die hinzuzufügende Zeile darstellt.

Neben Dateien können mit dem diff-Befehl auch zwei Verzeichnisse verglichen werden. Lassen Sie uns dies anhand eines Beispiels lernen.

Hier sind die Inhalte eines Verzeichnisses namens 'new_dir' :

$ ls new_dir/
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt

und hier sind die Inhalte eines Verzeichnisses namens 'old_dir' :

$ ls orig_dir/
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt test
file2 frnd frnd1.cpp log1.txt log3.txt log5.txt

Hier ist nun die Ausgabe, wenn der Diff-Befehl ausgeführt wurde:

$ diff new_dir/ orig_dir/
Only in new_dir/: file
Only in orig_dir/: test

Sie können also sehen, dass beim Ausführen des diff-Befehls zum Vergleichen dieser beiden Verzeichnisse die fehlenden Dateien in den Verzeichnissen leicht angezeigt werden.

Hier sind einige der häufig verwendeten Befehlszeilenoptionen:

1) Verwenden Sie -i, um Unterschiede zwischen Groß- und Kleinschreibung zu ignorieren

Wenn zwei Dateien denselben Text enthalten, aber in unterschiedlichen Fällen, meldet der diff-Befehl dies immer noch standardmäßig als Unterschied.

Zum Beispiel:

$ cat file1
HI
$ cat file2
hi
$ diff file1 file2
1c1
< HI --- > hi

Sie können also sehen, dass der diff-Befehl den Fallunterschied in der Ausgabe gemeldet hat.

Um mit diesem Standardverhalten davonzukommen, verwenden Sie die Option -i.

Hier ist ein Beispiel:

$ diff -i file1 file2
$

Sie können also sehen, dass keine Ausgabe erzeugt wurde, was das Standardverhalten ist, wenn beide Dateien gleich sind.

2) Melden Sie mit der Option -s, dass die Dateien gleich sind

Gegen Ende von Beispiel 1 haben wir gesehen, dass diff nichts meldet, wenn die Dateien gleich sind. Obwohl dieses Standardverhalten in Ordnung ist, könnte es dennoch viele verwirren, insbesondere die Neulinge. Wenn Sie also möchten, dass der diff-Befehl explizit meldet, dass die Dateien gleich sind, verwenden Sie die Befehlszeilenoption -s.

Hier ist ein Beispiel:

$ diff -is file1 file2
Files file1 and file2 are identical

Sie können also sehen, dass ich die Option -s in den Befehl eingefügt habe, den wir im letzten Beispiel verwendet haben, und dieses Mal hat der diff-Befehl explizit gemeldet, dass beide Dateien identisch sind.

3) Verwenden Sie -b, um Leerzeichen zu ignorieren

Ein weiterer häufiger Anwendungsfall ist die unterschiedliche Anzahl von Leerzeichen, für die der diff-Befehl die Dateien als unterschiedlich meldet.

Hier ist ein Beispiel:

$ cat file1
Hi, how are you?

$ cat file2
Hi, how are  you?

Beachten Sie, dass der einzige Unterschied zwischen den beiden Dateien das zusätzliche Leerzeichen zwischen den Wörtern „are“ und „you“ in file2 ist. Wenn nun der diff-Befehl verwendet wird, um diese beiden Dateien zu vergleichen, ist hier die Ausgabe:

$ diff file1 file2
1c1
< Hi, how are you?

---

> Hi, how are  you?

Sie können also sehen, dass der diff-Befehl den Unterschied gemeldet hat. Aber wenn Sie möchten, dass diff diese Leerzeichen ignoriert, verwenden Sie die Option -b :

$ diff -b file1 file2
$

Sie können also sehen, dass der diff-Befehl aufgrund der Option -b beide Dateien als gleich gemeldet hat.

Befehlstipp :

Der folgende Befehl zeigt alle Dateiunterschiede zwischen zwei Ordnern an

diff -Naur old/ new/

Der Befehl diff bietet viele weitere Befehlszeilenoptionen. Lesen Sie die Manpage für die vollständige Liste.


Linux
  1. Sortierbefehl in Linux mit Beispielen

  2. chattr-Befehl unter Linux mit Beispielen

  3. JQ-Befehl in Linux mit Beispielen

  4. ln-Befehlsbeispiele in Linux

  5. file Befehlsbeispiele in Linux

Verwenden des Cat-Befehls unter Linux mit Beispielen

Linux-WC-Befehl mit Beispielen

Verwendung des Linux-mv-Befehls mit Beispielen

Linux-Mount-Befehl mit Beispielen

gawk Linux-Befehl mit Beispielen

Linux-make-Befehl mit Beispielen