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 для работы с изменениями в файлах и проектах. Она позволяет легко применять, проверять и откатывать изменения, что делает её незаменимой при командной разработке и администрировании.