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

Crystal Clear app winprops bw.pngCmp

Tipusutilitat UNIX Modifica el valor a Wikidata

Mode d'úsModifica

La invocació de la comanda 'cmp' té el següent format:

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

On arxiu1 és un arxiu 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 guió (-).

Si s'invoca la comanda passant-li només els dos arxius, 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 la comanda que se salteu una quantitat de bytes del començament de cada arxiu, 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 arxiu, la primera posició (1) de cmp correspon a la posició n dins de l'arxiu.

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

Els paràmetres possibles a utilitzar són:

-B, - print-bytes
Imprimeix els bytes com text. Útil per a arxius que continguin text.
-I n, - ignore-initial = n
Saltar n bytes del començament dels dos arxius.
-I n1: n2, - ignore-initial = n1: n2
Especifica saltar n bytes del començament de cada arxiu 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 retornatsModifica

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

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

ExemplesModifica

Tenint en compte els següents arxius, dues de text i dos binaris, es desenvoluparan les comparacions entre arxius 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 arxius 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 d'arxiu 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 arxiu el valor en decimal i caràcter ascii del byte analitzat.


3. Llistar les diferències, saltant doble byte del començament de cada arxiu 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 externsModifica

ReferènciesModifica