cmp(1) cmp(1)
NAME
cmp - Dateien zeichenweise vergleichen (compare)
SYNTAX
cmp [-l] [-s] [--] datei1 datei2
BESCHREIBUNG
Mit cmp können Sie zwei Dateien zeichenweise bzw. byteweise verglei-
chen. Wenn es Unterschiede zwischen den beiden Dateien gibt, dann gibt
cmp die Unterschiede auf die Standardausgabe aus.
Wenn die beiden Dateien identisch sind, gibt cmp nichts aus.
OPTIONEN
Keine Option angegeben:
Wenn die Dateien identisch sind, gibt cmp nichts aus.
Wenn sich die Dateien unterscheiden, gibt cmp die Zeichen- bzw.
Bytenummer und die Zeilennummer des ersten Unterschieds zwischen
datei1 und datei2 in folgender Form aus:
datei1 datei2 differ: char zeichennummer, line zeilennummer
-l Alle Unterschiede werden in folgender Form ausgegeben:
zeichennummer zeichen(datei1) zeichen(datei2)
zeichennummer ist die Position der abweichenden Zeichen ab Datei-
anfang. Dabei erhält das erste Zeichen einer Datei die Nummer 1,
Leerzeichen werden mitgezählt. zeichennummer wird dezimal ausge-
geben.
zeichen sind die voneinander abweichenden Zeichen in datei1 und
datei2. zeichen werden oktal ausgegeben. Wenn die Dateien iden-
tisch sind, wird nichts ausgegeben.
-s cmp gibt nichts aus. Der Wert des Endestatus wird zurückgelie-
fert, aber nicht automatisch am Bildschirm ausgegeben. -s darf
nicht zusammen mit -l verwendet werden.
-- Ende der Optionenliste. Die Angabe ist nötig, wenn datei1 mit -
beginnt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
cmp(1) cmp(1)
datei1 datei2
Namen der Dateien, die Sie vergleichen wollen.
- Wenn Sie für datei1 den Bindestrich - angeben, dann liest cmp
von der Standardeingabe und vergleicht Ihre Eingaben mit
datei2.
- Wenn eine der beiden Dateien endet, ohne daß cmp einen Unter-
schied feststellen konnte, dann meldet cmp mit folgendem Text,
daß in der kürzeren Datei EOF (Dateiende) erkannt wurde:
cmp: EOF on datei
- Wenn in einer von zwei sonst gleichen Dateien ein Zeichen
fehlt, dann meldet cmp -l wegen der Verschiebung der Positio-
nen alle folgenden Zeichen als unterschiedlich.
- Dem ersten Zeichen einer Datei ist als zeichennummer die 1 und
nicht die 0 zugeordnet.
- Leerzeichen und Neue-Zeile-Zeichen zählen bei den zeichennum-
mern mit.
ENDESTATUS
0 Dateien sind identisch
1 Dateien sind unterschiedlich
>1 Fehler. Auf Datei kann nicht zugegriffen werden, oder Argument
fehlt.
FEHLERMELDUNG
cmp: cannot open datei
Sie haben für eine Datei kein Leserecht oder eine der angegebenen
Dateien existiert nicht.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
Die Umgebungsvariable LCALL bestimmt die gesamte internationale Umge-
bung. LCALL hat Vorrang vor allen anderen Umgebungsvariablen im
Bereich der Internationalisierung.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
cmp(1) cmp(1)
BEISPIELE
Beispiel 1
Vergleich zweier Dateien mit Ausgabe der unterschiedlichen Zeichen und
ihrer Position zeichennummer.
$ echo 1 2 3 4 5 7 8 a >dat1
$ echo 1 2 3 4 5 6 9 a >dat2
$ cmp -l dat1 dat2
11 67 66
13 70 71
$
Beispiel 2
Die Shell-Prozedur lösche.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
$ lösche.gl dat1 dat2
ü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(1), diff(1).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98