Команда diff в Linux позволяет сравнивать содержимое двух файлов или директорий и отображать различия между ними. Она особенно полезна при редактировании файлов, слиянии различных версий программного кода или при анализе изменений в файлах после выполнения определенных команд.
Вот базовый синтаксис команды diff:
```
diff [опции] <файл1> <файл2>
```
Примеры применения:
1. Сравнение двух файлов:
```
diff file1.txt file2.txt
```
Команда выведет различия между файлами file1.txt и file2.txt.
2. Автоматическое применение различий:
```
diff -u file1.txt file2.txt > patch.diff
```
Команда сравнивает файлы file1.txt и file2.txt, а затем сохраняет различия в файле patch.diff в унифицированном формате (-u). Этот файл может быть использован с помощью команды `patch` для применения изменений к исходному файлу.
3. Рекурсивное сравнение содержимого двух директорий:
```
diff -r dir1/ dir2/
```
Команда сравнивает все файлы и поддиректории между dir1 и dir2 и показывает различия между ними.
4. Игнорирование различий в пробелах и пробельных символах:
```
diff -b file1.txt file2.txt
```
Команда проигнорирует различия, вызванные пробелами и пробельными символами.
5. Вывод только различающихся строк:
```
diff -q file1.txt file2.txt
```
Команда выведет только сообщение о том, различается ли содержимое файлов или нет, без указания самих различий строк.
6. Сравнение файлов в пределах одной директории (с использованием команды find):
```
diff <(find dir1/ -type f -print0 | sort -z | xargs -0 cat) <(find dir2/ -type f -print0 | sort -z | xargs -0 cat)
```
Команда сравнивает файлы в директориях dir1 и dir2 без рекурсии.
Команда diff обладает большим количеством опций, которые позволяют настраивать ее работу. Для получения дополнительной информации о доступных опциях можно использовать `man diff`.