Unabhängig von Ihrer Rolle können Sie sich in einer Situation wiederfinden, in der Sie zwei Dateien mit einem Befehlszeilendienstprogramm vergleichen möchten, wenn Sie bei Ihrer normalen Arbeit Dinge auf der Befehlszeile unter Linux erledigen. Es gibt mehrere Befehlszeilentools, mit denen Sie dies tun können, und eines davon ist 'cmp ' Befehl.
In diesem Tutorial werden wir 'cmp' anhand leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle in diesem Tutorial erwähnten Beispiele und Anweisungen auf Ubuntu 16.04LTS getestet wurden.
cmp-Befehl
Mit dem Befehl 'cmp' können Sie zwei Dateien byteweise vergleichen. Das Dienstprogramm bietet mehrere Funktionen in Form von Befehlszeilenoptionen. In diesem Tutorial werden wir einige der wichtigsten Optionen besprechen, die Ihnen (einem Anfänger) eine gute Vorstellung davon geben, wie das Tool funktioniert.
1. Wie man zwei Dateien mit cmp vergleicht
In seiner einfachsten Form können Sie 'cmp' folgendermaßen verwenden:
cmp [file1-name] [file2-name]
Wie bereits erwähnt, vergleicht das Tool zwei Dateien Byte für Byte. Wenn ein Unterschied gefunden wird, stoppt das Tool und erzeugt eine Ausgabe, die angibt, in welcher Zeile und in welchem Byte sich der Unterschied befindet.
Zum Beispiel:
cmp file1.txt file2.txt
Wie Sie im obigen Screenshot sehen können, sagt die Ausgabe deutlich, dass sich die Dateien bei Byte 20 in Zeile 1 unterscheiden.
2. Wie man cmp dazu bringt, unterschiedliche Bytes zu drucken
Wenn Sie möchten, können Sie 'cmp' auch dazu bringen, die unterschiedlichen Bytes in seiner Ausgabe anzuzeigen. Dies kann mit dem -b erfolgen Befehlszeilenoption.
cmp -b [file1] [file2]
Zum Beispiel:
cmp -b file1.txt file2.txt
In diesem Fall liegt der Unterschied, wie Sie im obigen Screenshot sehen können, im 17. Byte, das „l“ in file1.txt und „i“ in file2.txt ist. Die Werte 154 und 151 sind jeweils die Werte für diese Bytes.
3. Wie man cmp dazu bringt, einige anfängliche Bytes aus beiden Dateien zu überspringen
Wenn Sie möchten, können Sie 'cmp' auch dazu bringen, eine bestimmte Anzahl von Anfangsbytes aus beiden Dateien zu überspringen und sie dann zu vergleichen. Dies kann durch Angabe der Anzahl der Bytes als Argument für das -i erfolgen Befehlszeilenoption.
cmp -i [zu überspringende Bytes] [Datei1] [Datei2]
Zum Beispiel:
cmp -i 10 Datei1.txt Datei2.txt
Beachten Sie, dass in solchen Fällen (wo Sie -i verwenden, um Bytes zu überspringen) das Byte, bei dem der Vergleich beginnt, als Byte mit der Nummer Null behandelt wird.
Im weiteren Verlauf können Sie mit dem Tool auch eine unterschiedliche Anzahl von Bytes aus beiden Dateien überspringen. Dies kann auf folgende Weise erfolgen:
cmp -i [bytes-to-skip-from-first-file] : [bytes-to-skip-from-second-file] [file1] [file2]
Zum Beispiel:
cmp -i 4:7 file1.txt file2.txt
4. Wie man cmp dazu bringt, die Byte-Position (und den Wert) für alle unterschiedlichen Bytes anzuzeigen
Wenn Sie möchten, können Sie auch den Befehl 'cmp' veranlassen, die Byte-Position und den Byte-Wert für alle unterschiedlichen Bytes auszudrucken. Auf diese Funktion kann mit -l zugegriffen werden Befehlszeilenoption.
cmp -l [file1] [file2]
Zum Beispiel:
cmp -l file1.txt file2.txt
Die erste Spalte in der Ausgabe (Beispiel oben) repräsentiert die Position (Bytenummer) unterschiedlicher Bytes. Die zweite Spalte stellt den Bytewert des abweichenden Bytes in der ersten Datei dar, während die dritte Spalte den Bytewert des abweichenden Bytes in der zweiten Datei darstellt.
5. So begrenzen Sie die Anzahl der zu vergleichenden Bytes
Das Tool ermöglicht es Ihnen auch, die Anzahl der zu vergleichenden Bytes zu begrenzen - Sie möchten beispielsweise höchstens 25 oder 50 Bytes vergleichen. Dies kann mit -n erfolgen Befehlszeilenoption.
$ cmp -n [Anzahl der zu vergleichenden Bytes] [Datei1] [Datei2]
Zum Beispiel:
$ cmp -n 25 Datei1.txt Datei2.txt
6. So zeigen Sie den Fortschrittsmesser an, während Sie den cmp-Befehl verwenden
Während Sie große Dateien (oder sogar Partitionen) mit „cmp“ vergleichen, möchten Sie vielleicht den Fortschritt des laufenden Vergleichs sehen. Dies kann mit dem Befehl „pv“ zusammen mit dem Befehl „cmp“ erfolgen. Hier ist die Befehlsvorlage, die Sie verwenden können:
$ pv [file1] | cmp -l [file2] > [output-file]
Zum Beispiel:
$ pv file1.txt | cmp -l file3.txt > output.txt
Beachten Sie, dass die Datei „output.txt“ alle Ausgaben enthält, die der Befehl „cmp“ erzeugt. Die Fortschrittsanzeige (die Sie im obigen Screenshot sehen können) wird durch den Befehl „pv“ erzeugt.
Der 'pv'-Befehl ist unter Linux normalerweise nicht vorinstalliert (zumindest nicht unter Ubuntu). Aber Sie können es einfach mit dem folgenden Befehl installieren:
sudo apt-get install pv
7. Wie man 'cmp' dazu bringt, die Ausgabe zu unterdrücken
Mit dem Tool können Sie auch die Ausgabe unterdrücken, die es normalerweise erzeugt. Dies kann mit dem -s erfolgen Befehlszeilenoption.
$ cmp -s [file1] [file2]
Zum Beispiel:
$ cmp -s file1.txt file2.txt
Diese Option kann nützlich sein, wenn Sie das Dienstprogramm „cmp“ in Skripten verwenden. Abhängig davon, ob die Dateien beispielsweise identisch sind oder nicht (was man anhand des Exit-Codes des Befehls erkennen kann), möchten Sie möglicherweise eine benutzerdefinierte Meldung anstelle der Ausgabe anzeigen, die das Tool normalerweise erzeugt.
Schlussfolgerung
Wir haben die meisten Befehlsoptionen von „cmp“ in diesem Artikel besprochen, Sie müssen diese also nur üben, um das Tool in Ihrer täglichen Arbeit zu verwenden. Im Zweifelsfall oder bei Fragen konsultieren Sie die 'cmp' Manpage.