Справочник

Команда diff: как сравнить два файла и найти, что изменилось

diff показывает, чем отличаются два файла: какие строки убрали, какие добавили. Так видно, что вы поменяли в настройках, прежде чем применять их.

Обновлено 11.10.2026≈ 4 мин чтения
Содержание 9

Что сделать прямо сейчас

  1. Подключитесь к серверу — инструкция.
  2. Перед правкой настроек сделайте копию файла в домашней папке: sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak.
  3. Поправьте файл — как пользоваться nano.
  4. Сравните копию с новым файлом: diff -u ~/nginx.conf.bak /etc/nginx/nginx.conf.
  5. Если diff ничего не вывел — файлы одинаковые. Если вывел строки с - и + — это ваши изменения.

Как читать вывод diff -u

Первые две строки — имена файлов и время их изменения: --- — первый файл, +++ — второй. Дальше идут куски с изменениями. Например, в файле поменяли одну строку:

@@ -1,5 +1,5 @@
 server {
     listen 80;
-    server_name example.com;
+    server_name example.com www.example.com;
     root /var/www/example;
 }
Что в строкеЧто значит
- в началестрока есть в первом файле, во втором её нет: удалена или заменена
+ в началестрока появилась во втором файле
пробел в началестрока не менялась, она показана для ориентира
@@ -1,5 +1,5 @@кусок начинается с 1-й строки и занимает 5 строк в обоих файлах

Вокруг каждого изменения diff показывает по 3 неизменённые строки. Чтобы видеть больше, задайте число: diff -U 10 файл1 файл2.

Вывод без -u

Без ключей diff выводит изменения в старом формате:

3c3
<     server_name example.com;
---
>     server_name example.com www.example.com;

3c3 значит: 3-я строка первого файла заменена 3-й строкой второго. Буква a значит «добавлено», d — «удалено». Строки с < — из первого файла, с > — из второго. Читать -u проще, поэтому дальше в примерах он.

Ключи diff

КомандаЧто делает
diff -u a.conf b.confпоказать изменения с минусами и плюсами
diff -q a.conf b.confтолько сказать, различаются ли файлы
diff -s a.conf b.confявно сообщить, если файлы одинаковые
diff -y a.conf b.confпоказать файлы в два столбца рядом
diff --color -u a.conf b.confраскрасить удалённое и добавленное
diff -w a.conf b.confне учитывать пробелы
diff -B a.conf b.confне учитывать пустые строки
diff -i a.conf b.confне различать заглавные и строчные буквы
diff -r /etc/nginx ~/nginx-copyсравнить две папки со всеми вложенными

Сравнить папки и вывод команд

Сохраните копию папки с настройками перед большими изменениями: sudo cp -r /etc/nginx ~/nginx-copy. Потом sudo diff -r ~/nginx-copy /etc/nginx покажет, что поменялось во всех файлах, и назовёт файлы, которые есть только в одной из папок.

Сравнить два списка, не глядя на порядок строк, можно так:

diff <(sort old.txt) <(sort new.txt)

<(команда) подставляет вывод команды вместо файла. О сортировке — Команды wc, sort и uniq.

Чтобы сравнить файл на сервере с файлом на своём компьютере, сначала скачайте его — Команда scp.

Коды завершения

КодЧто значит
0файлы одинаковые
1файлы различаются
2ошибка: файла нет, нет прав или другая проблема

Посмотреть код — echo $? сразу после diff. В скриптах так проверяют, изменился ли файл.

Ошибки и как их исправить

Что видноЧто значитЧто сделать
No such file or directoryневерный путь к одному из файловпроверьте путь: ls -l с тем же именем
Permission deniedодин из файлов закрыт для вашего пользователязапустите sudo diff
diff сообщает, что двоичные файлы различаютсяэто не текст, а архив, картинка или программасравнивайте только текстовые файлы
различается каждая строка, хотя текст тот жефайл сохранили в Windows: в конце строк лишний символdiff --strip-trailing-cr a.conf b.conf
различия только в пробелахотступы сделаны по-разномуdiff -w не учитывает пробелы
вывод очень длинныйфайлы сильно отличаютсясначала diff -q, затем листайте вывод через less — cat, less, head и tail

Источники

  • Справка diff для Ubuntu 24.04 — ключи -u, -q, -s, -y, -r, -w, -b, -B, -i, --color, --strip-trailing-cr; 3 строки окружения по умолчанию; коды завершения 0, 1 и 2.

Сверено 11 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 11.10.2026