Go to the first, previous, next, last section, table of contents.


Invoking @command{cmp}

The @command{cmp} command compares two files, and if they differ, tells the first byte and line number where they differ. Bytes and lines are numbered starting with 1. The arguments of @command{cmp} are as follows:

cmp options... from-file [to-file [from-skip [to-skip]]]

The file name `-' is always the standard input. @command{cmp} also uses the standard input if one file name is omitted. The from-skip and to-skip operands specify how many bytes to ignore at the start of each file; they are equivalent to the @option{--ignore-initial=from-skip:to-skip} option.

An exit status of 0 means no differences were found, 1 means some differences were found, and 2 means trouble.

Options to @command{cmp}

Below is a summary of all of the options that GNU @command{cmp} accepts. Most options have two equivalent names, one of which is a single letter preceded by `-', and the other of which is a long name preceded by `--'. Multiple single letter options (unless they take an argument) can be combined into a single command line word: @option{-bl} is equivalent to @option{-b -l}.

@option{-b}
@option{--print-bytes}
Print the differing bytes. Display control bytes as a `^' followed by a letter of the alphabet and precede bytes that have the high bit set with `M-' (which stands for "meta").
@option{--help}
Output a summary of usage and then exit.
@option{-i skip}
@option{--ignore-initial=skip}
Ignore any differences in the first skip bytes of the input files. Treat files with fewer than skip bytes as if they are empty. If skip is of the form @option{from-skip:to-skip}, skip the first from-skip bytes of the first input file and the first to-skip bytes of the second.
@option{-l}
@option{--verbose}
Print the (decimal) byte numbers and (octal) values of all differing bytes.
@option{-n count}
@option{--bytes=count}
Compare at most count input bytes.
@option{-s}
@option{--quiet}
@option{--silent}
Do not print anything; only return an exit status indicating whether the files differ.
@option{-v}
@option{--version}
Output version information and then exit.

In the above table, operands that are byte counts are normally decimal, but may be preceded by `0' for octal and `0x' for hexadecimal.

A byte count can be followed by a suffix to specify a multiple of that count; in this case an omitted integer is understood to be 1. A bare size letter, or one followed by `iB', specifies a multiple using powers of 1024. A size letter followed by `B' specifies powers of 1000 instead. For example, @option{-n 4M} and @option{-n 4MiB} are equivalent to @option{-n 4194304}, whereas @option{-n 4MB} is equivalent to @option{-n 4000000}. This notation is upward compatible with the SI prefixes for decimal multiples and with the IEC 60027-2 prefixes for binary multiples.

The following suffixes are defined. Large sizes like 1Y may be rejected by your computer due to limitations of its arithmetic.

`kB'
kilobyte: 10^3 = 1000.
`k'
`K'
`KiB'
kibibyte: 2^10 = 1024. `K' is special: the SI prefix is `k' and the IEC 60027-2 prefix is `Ki', but tradition and POSIX use `k' to mean `KiB'.
`MB'
megabyte: 10^6 = 1,000,000.
`M'
`MiB'
mebibyte: 2^20 = 1,048,576.
`GB'
gigabyte: 10^9 = 1,000,000,000.
`G'
`GiB'
gibibyte: 2^30 = 1,073,741,824.
`TB'
terabyte: 10^12 = 1,000,000,000,000.
`T'
`TiB'
tebibyte: 2^40 = 1,099,511,627,776.
`PB'
petabyte: 10^15 = 1,000,000,000,000,000.
`P'
`PiB'
pebibyte: 2^50 = 1,125,899,906,842,624.
`EB'
exabyte: 10^18 = 1,000,000,000,000,000,000.
`E'
`EiB'
exbibyte: 2^60 = 1,152,921,504,606,846,976.
`ZB'
zettabyte: 10^21 = 1,000,000,000,000,000,000,000
`Z'
`ZiB'
2^70 = 1,180,591,620,717,411,303,424. (`Zi' is a GNU extension to IEC 60027-2.)
`YB'
yottabyte: 10^24 = 1,000,000,000,000,000,000,000,000.
`Y'
`YiB'
2^80 = 1,208,925,819,614,629,174,706,176. (`Yi' is a GNU extension to IEC 60027-2.)


Go to the first, previous, next, last section, table of contents.