Голый diff old new выводит формат, неудобный для чтения и не применимый обратно. На практике почти всегда нужны конкретные флаги.

diff -u old.conf new.conf > fix.patch   # unified — как git diff
patch < fix.patch                        # применить патч

diff -rq /etc/nginx/sites-available /backup/sites-available   # только имена разных файлов
diff -w old.conf new.conf                # игнор пробелов

-u — unified diff, тот же формат, что и git diff, единственный, который patch применяет без путаницы со смещением строк. -r рекурсивно по директориям, -q — не печатать содержимое, только “differ”/“only in”. -w спасает, когда разница только в отступах после автоформатера.

#bash #linux #cli