# Cmp

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ó.

## Mode d'ús

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

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

### 0

    Els fitxers són idèntics.

### 1

    Els fitxers són diferents.

### 2

    Error de lectura o amb els paràmetres.

## Exemples

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

* Invocació de cmp.

## Referències

* ↑ Http://www.unix.com/man-page/Linux/1/cmp /
* ↑ http://www.gnu.org/software/diffutils/manual/html_node/Invoking-cmp.html