Cmp

Cmp

Tipusutilitat UNIX Modifica el valor a Wikidata

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]

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]