(compare two files)
Mit cmp können Sie zwei Dateien zeichenweise vergleichen. Wenn es Unterschiede zwischen den beiden Dateien gibt, dann gibt cmp die Unterschiede auf die Standard-Ausgabe aus.
Wenn die beiden Dateien identisch sind, gibt cmp nichts aus.
Syntax
cmp[ -l|-s] datei1 datei2 |
Keine Option angegeben Wenn die Dateien identisch sind, gibt cmp nichts aus. Wenn sich die Dateien unterscheiden, gibt cmp die Zeichennummer und die Zeilennummer des ersten Unterschieds zwischen datei1 und datei2 in folgender Form aus:
Alle Unterschiede werden in folgender Form ausgegeben:
zeichennummer ist die Position der abweichenden Zeichen ab Dateianfang. Dabei erhält das erste Zeichen einer Datei die Nummer 1, Leerzeichen werden mitgezählt. zeichennummer wird dezimal ausgegeben. zeichen sind die voneinander abweichenden Zeichen in datei1 und datei2. zeichen werden oktal ausgegeben. Eine ASCII-Tabelle mit der Aufschlüsselung der oktalen Werte finden Sie in Tabellen und Verzeichnisse. Wenn die Dateien identisch sind, wird nichts ausgegeben.
cmp gibt nichts aus. Der Wert des Endestatus wird zurückgeliefert, aber nicht automatisch am Bildschirm ausgegeben. Der Endestatus kann mit echo $? abgefragt werden.
Namen der Dateien, die Sie vergleichen wollen.
|
Endestatus
0 | Dateien sind identisch |
1 | Dateien sind unterschiedlich |
>1 | Fehler: Auf Datei kann nicht zugegriffen werden, oder Argument fehlt. |
Fehler
|
Internationale Umgebung
Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos cmp: LANG Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden. LC_ALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen. LC_CTYPE Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten). LC_MESSAGES Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden. NLSPATH Legt den Pfad der Meldungsdateien für LC_MESSAGES fest. |
Beispiel 1
Vergleich zweier Dateien mit Ausgabe der unterschiedlichen Zeichen und ihrer Position zeichennummer.
|
Beispiel 2
Die Shell-Prozedur loesche.gl vergleicht zwei Dateien und löscht bei Gleichheit eine der beiden. if cmp -s $1 $2 then rm $2 fi Beim Aufruf der Prozedur mit
übergeben Sie dat1 und dat2 als Stellungsparameter an die Prozedur. cmp liefert mit der Option -s den Endestatus zurück. Wenn sein Wert gleich 0 ist, wird dat2 gelöscht, sonst nicht. |
Siehe auch
comm, diff |