cmp

De Viquipèdia
Dreceres ràpides: navegació, cerca

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]

Mode d'ús[modifica | modifica el codi]

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 retornats[modifica | modifica el codi]

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.

Exemples[modifica | modifica el codi]

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ínea 1 
hex1 hex2 son diferents: byte 1, línea 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 externs[modifica | modifica el codi]

Referències[modifica | modifica el codi]