ホーム > テキスト処理・検索 > patch

patch: ファイルに変更点(パッチ)を適用する

'diff'コマンドで生成されたパッチファイル(.patch)を使用して、元のファイルに変更点を適用するために使用されます。このツールを使用すると、ソースコードの変更や設定ファイルの更新作業を効率的に行うことができます。

概要

patchは、diffコマンドによって作成された出力ファイル(通称パッチファイル)を読み込み、元のファイルに変更を適用するユーティリティです。このパッチファイルは通常、どの内容が追加、削除、変更されたかを1行ずつ記録しています。patchコマンドは、この情報に基づいて元のファイルを修正します。バージョン管理システム(CVS、Gitなど)が登場する前は、コードの変更点を共有する主要な手段でした。

主な特徴

patchコマンドの主な特徴は以下の通りです。

  • diffコマンドで生成されたパッチファイルを使用します。
  • ソースコードの更新、設定ファイルの変更など、広範囲に活用されます。
  • 元のファイルがパッチファイルと完全に一致しなくても、一部の変更点を検出し適用することができます。
  • 変更内容を元に戻す(reverse)機能も提供します。

主なオプション

よく使用するpatchコマンドのオプションを用途別にグループ化しました。

1) パッチの適用と取り消し

2) ヘルプ

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`patch` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

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`で生成される統合(unified)フォーマットが最も一般的なパッチ形式です。このフォーマットを使用するとパッチ適用成功率が高まります。
  • `-p`オプションはパッチファイルのパス情報を無視するために非常に重要です。パッチファイルのヘッダーを確認し、正しいレベルを指定する必要があります。例えば、`a/src/file.c`のようなパスの場合、`-p1`を使用すると`src/file.c`にパッチを適用します。
  • パッチ適用に失敗すると、`.rej`拡張子を持つファイルが生成されます。このファイルはパッチに失敗した部分を含んでおり、手動で修正する際に参考にすることができます。
  • パッチを適用する前に、元のファイルのバックアップを作成しておくことをお勧めします。

関連するコマンド

機能的に類似しているか、よく一緒に使われるコマンドです。


同じカテゴリのコマンド