Команда diff: как сравнить два файла и найти, что изменилось
diff показывает, чем отличаются два файла: какие строки убрали, какие добавили. Так видно, что вы поменяли в настройках, прежде чем применять их.
Содержание 9
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Перед правкой настроек сделайте копию файла в домашней папке:
sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak. - Поправьте файл — как пользоваться nano.
- Сравните копию с новым файлом:
diff -u ~/nginx.conf.bak /etc/nginx/nginx.conf. - Если 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 года.
Что почитать дальше
- Команды wc, sort и uniqотсортировать перед сравнением.
- Редактор nanoкак править файлы настроек.
- Команда scpскачать файл с сервера.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026