patch
Команда patch
в Linux используется для автоматического внесения изменений в файлы и каталоги на основе diff-файлов (патчей). Это полезный инструмент для разработчиков и системных администраторов, позволяющий быстро обновлять исходный код, конфигурации или документацию.
Основной синтаксис
patch [опции] < файл_патча
или
patch [опции] исходный_файл файл_патча
Создание патча
Чтобы воспользоваться patch
, сначала нужно создать diff-файл. Обычно это делается с помощью команды diff
:
diff -u old_file.txt new_file.txt > changes.patch
Файл changes.patch
будет содержать различия между двумя версиями файла.
Применение патча
Применим изменения из changes.patch
к исходному файлу:
patch < changes.patch
Если необходимо указать конкретный файл:
patch old_file.txt changes.patch
Применение патча к каталогу
Для рекурсивного применения патчей ко всему проекту:
patch -p1 < project.patch
Опция -pN
указывает, сколько уровней каталогов убрать из пути внутри diff-файла.
Чаще всего используется -p1
.
Проверка и откат патча
Перед применением можно проверить, что произойдет:
patch --dry-run < changes.patch
Если изменения нужно отменить:
patch -R < changes.patch
Полезные опции
-pN
— уровень путей (обычно-p1
).--dry-run
— тестовое применение без изменений.-R
— откат изменений.--verbose
— подробный вывод.
Пример на практике
1. Создадим два файла:
echo "Hello World" > file.txt
echo "Hello Linux World" > file_new.txt
2. Сравним и создадим патч:
diff -u file.txt file_new.txt > fix.patch
3. Применим патч:
patch < fix.patch
Теперь file.txt
будет содержать обновленную строку.
Заключение
Команда patch
— это мощный инструмент Linux для работы с изменениями в файлах и проектах. Она позволяет легко применять, проверять и откатывать изменения, что делает её незаменимой при командной разработке и администрировании.