Обзор
patch — это утилита, которая считывает выходной файл, созданный командой diff (также известный как файл патча), и применяет изменения к исходному файлу. Этот файл патча обычно записывает, какие строки были добавлены, удалены или изменены. Команда patch изменяет исходный файл на основе этой информации. До появления систем контроля версий (CVS, Git и т.д.) это был основной способ обмена изменениями кода.
Основные особенности
Основные особенности команды patch:
- Использует файлы патчей, сгенерированные командой diff.
- Широко используется для обновления исходного кода, изменения файлов конфигурации и т.д.
- Может обнаруживать и применять некоторые изменения, даже если исходный файл не полностью соответствует файлу патча.
- Также предоставляет функцию отмены изменений (reverse).
Основные опции
Часто используемые опции команды patch сгруппированы по назначению.
1) Применение и отмена патчей
2) Справка
Сгенерированная команда:
Комбинируйте команды.
Описание:
`patch` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Изучите функциональность команды patch на различных примерах использования.
Применение файла патча
patch -p1 -i my_changes.patch
Применяет изменения к исходному файлу с помощью файла my_changes.patch. Опция `-p1` игнорирует первый компонент пути в файле патча.
Отмена изменений
patch -p1 -R -i my_changes.patch
Отменяет примененные изменения, используя опцию `-R`. Используется для возврата файла патча к исходному состоянию.
Применение патча через пайп
diff -u original_file.txt new_file.txt | patch -p0 original_file.txt
Передает вывод команды diff напрямую команде patch через пайп (`|`), применяя патч без создания файла патча.
Предварительный просмотр применения патча
patch --dry-run -p1 -i my_changes.patch
Используйте опцию `--dry-run`, чтобы заранее увидеть, какие изменения произойдут при применении патча.
Установка
patch включен по умолчанию в большинство дистрибутивов Linux. Если пакет отсутствует, вы можете установить пакет `patch` или `diffutils` следующим образом:
Debian/Ubuntu
sudo apt update && sudo apt install -y patch
RHEL/CentOS/Fedora
sudo dnf install -y patch
Arch Linux
sudo pacman -S --needed patch
Советы и примечания
Собраны важные моменты, которые следует учитывать при использовании команды patch.
Советы
- Унифицированный формат, созданный с помощью `diff -u`, является наиболее распространенным форматом патчей. Использование этого формата повышает вероятность успешного применения патча.
- Опция `-p` очень важна для игнорирования информации о пути в файле патча. Вы должны проверить заголовок файла патча, чтобы указать правильный уровень. Например, если путь `a/src/file.c`, использование `-p1` применит патч к `src/file.c`.
- При неудачном применении патча создается файл с расширением `.rej`. Этот файл содержит части, которые не удалось пропатчить, и может быть использован для ручного исправления.
- Рекомендуется создать резервную копию исходных файлов перед применением патча.