cmp és una ordre de la família dels sistemes operatius Unix. Aquest realitza una comparació binària, byte a byte, entre dos fitxers i mostra el resultat en la sortida estàndard. En cas que s'indiqui un sol fitxer, pren l'entrada estàndard com a font per fer la comparació.[1]

Cmp

Tipusutilitat UNIX Modifica el valor a Wikidata

Mode d'ús

modifica

La invocació de l'ordre cmp té el següent format:

  • Cmp [PARÀMETRES] ... Fitxer1 [fitxer2 [SALTEAR1 [SALTEAR2]]]

On fitxer1 és un fitxer que s'ha d'indicar obligatòriament, i si en canvi no s'indica fitxer2,cmp utilitza l'entrada estàndard com a font per fer la comparació. També és possible fer això usant el guionet (-).

Si s'invoca l'ordre passant-li només els dos fitxers, i aquests arribessin a ser diferents,cmp mostra en pantalla la posició del primer byte on difereixen. En cas contrari no mostra res en pantalla.

D'altra banda és possible indicar a l'ordre que se salteu una quantitat de bytes del començament de cada fitxer, això es defineix on s'indiquen SALTEAR1 i SALTEAR2 respectivament.

És important aclarir, que la posició (o nombre) dels bytes mostrats en pantalla, es comença a comptar a partir d'un (1) i són relatives a la comparació i no del fitxer original. Això implica que si s'indica saltar n bytes d'un fitxer, la primera posició (1) de cmp correspon a la posició n dins de l'fitxer.

La comparació binària es realitza fins al final dels fitxers, sempre que la quantitat de bytes a comparar és la mateixa. Si no finalitza tot just troba la marca de fi de fitxer, i cmp indica en pantalla amb què fitxer ocórrer.

Els paràmetres possibles a utilitzar són:

-B, - print-bytes
Imprimeix els bytes com text. Útil per a fitxers que continguin text.
-I n, - ignore-initial = n
Saltar n bytes del començament dels dos fitxers.
-I n1: n2, - ignore-initial = n1: n2
Especifica saltar n bytes del començament de cada fitxer respectivament.
-L, - verbose
Llista cada byte que difereix, indicant la seva posició i el seu valor en decimal.
-N MÀXIM, - bytes = MÀXIM
Compara fins a un MÀXIM de bytes.
-S, - quiet, - silent
No mostra res en pantalla. Útil per quan es vol aprofitar el valor de retorn

Valors retornats

modifica

Els valors retornats per 'cmp' després de la seva execució pot ser algun dels següents:[2]

0
Els fitxers són idèntics.
1
Els fitxers són diferents.
2
Error de lectura o amb els paràmetres.

Exemples

modifica

Tenint en compte els següents fitxers, dues de text i dos binaris, es desenvoluparan les comparacions entre fitxers d'igual tipus:


Fitxer1 Fitxer2 hex1 hex2
Hola món! sol món 0x00 0x01 0x02 0x10 0x01 0x01 0x02 0x02


1. Comprovar si són idèntics:

$ cmp Fitxer1 Fitxer2 $ cmp hex1 hex2
Resultat:
Fitxer1 Fitxer1 son diferents: byte 1, línia 1 
hex1 hex2 son diferents: byte 1, línia 1


2. Llistar les diferències mostrant els bytes, sent més útil última opció per als fitxers de text:

$ cmp -lb Fitxer1 Fitxer2 $ cmp -lb hex1 hex2
Resultat:
1 150 h 163 s
4 141 a 157 o
11 41 ! 12 ^J
cmp: fi de fitxer trobat a fitxer2
1 0 ^@ 1 ^A
4 20 ^P 2 ^B
Nota: cada diferència es llista en una línia (línia) indicant: nombre de byte (posició), i per cada fitxer el valor en decimal i caràcter ascii del byte analitzat.


3. Llistar les diferències, saltant doble byte del començament de cada fitxer i processar com a màxim un sol byte:

$ cmp -n 1 -i 2 Fitxer1 Fitxer2 $ cmp -n 1 -i 2 hex1 hex2
Resultat: No mostra res, ja que els bytes a comparar són idèntics per a tots dos casos. Els bytes involucrats són el caràcter 'l' i el valor hexadecimal 0x02.

Enllaços externs

modifica

Referències

modifica