Сравнение файлов в Linux (cmp)

Команда cmp сравнивает два файла и выдаёт есть ли между ними различия. Для примеров используем несколько файлов:

user@debian-server:~/test$ cat file1.txt 
abcdef
user@debian-server:~/test$ cat file2.txt 
abcdef
user@debian-server:~/test$ cat file3.txt 
abcdefgh
user@debian-server:~/test$ cat file4.txt 
abzdwf
1
2
3
4
5
6
7
8

Если два файла полностью совпадают, то команда ничего не возвращает.

user@debian-server:~/test$ cmp file1.txt file2.txt 
user@debian-server:~/test$ 
1
2

В случае если один файл больше другого и начальная часть большего файла совпадает с меньшим файлом cmp выдаст сообщение о том, что меньший файл закончился (EOF — End Of File).

user@debian-server:~/test$ cmp file1.txt file3.txt 
cmp: EOF on file1.txt after byte 6, in line 1
1
2

Если в файлах есть различие, то cmp остановится на первом различающемся байте и выдаст сообщение с его номером.

user@debian-server:~/test$ cmp file1.txt file4.txt 
file1.txt file4.txt differ: byte 3, line 1
1
2

С параметром -b команда cmp выведет значения различающегося байта.

user@debian-server:~/test$ cmp -b file1.txt file4.txt 
file1.txt file4.txt differ: byte 3, line 1 is 143 c 172 z
1
2

А с параметром -l весь список различающихся байт.

user@debian-server:~/test$ cmp -l file1.txt file4.txt 
3 143 172
5 145 167
1
2
3

Параметры можно скомбинировать

user@debian-server:~/test$ cmp -lb file1.txt file4.txt 
3 143 c    172 z
5 145 e    167 w
1
2
3
Последниее изменение: 05.12.2023, 15:13:53