patch - diff差分ファイルをオリジナルファイルに適用 - Linuxコマンド

当ページのリンクには広告が含まれています。

スポンサーリンク

patchコマンドは、diffコマンドで作成した差分ファイルをオリジナルファイル(あるいは逆)に適用するコマンドです。

patchコマンド

書式

patch [オプション] [オリジナルファイル [パッチファイル]]
patch < パッチファイル

コマンドを実行するとパッチファイルの形式を自動判別します。オプション -c(context形式)、-e(edスクリプト形式)、-n(RCS形式)、-u(unified形式)を指定した場合、自動判別を行いません。

オプション

-bファイルにパッチをあてるときにバックアップファイルを作成します。
-cパッチファイルをcontext形式として認識します。
-d ディレクトリ指定したディレクトリに移動し、パッチを適用します。
-eパッチファイルをedスクリプトとして認識します。
-f問い合わせを行いません。
-lタブやスペースを無視します。
-nパッチファイルをRCS形式として認識します。
-R新旧ファイルが反転しているとみなします。リバースパッチをあてるときは、このオプションを使います。
-uパッチファイルをunified形式として認識します。

使用例

まず、diffコマンドを使って、パッチファイルを作成します。ここでは、unified形式(オプション -u)を使って、パッチファイルを作成していますが、context形式(オプション -c)でも構いません。

$ diff -u old.txt new.txt > diff.patch

作成したパッチファイルの中身をみてみましょう。

$ cat diff.patch 
--- old.txt	2013-11-25 13:49:22.750920731 +0900
+++ new.txt	2013-11-25 13:49:37.294919860 +0900
@@ -1,4 +1,4 @@
-pello
-abcde
+hello
+ABCDE
 12345

パッチファイルを適用します。古いファイル(old.txt)にパッチが適用され、新しいファイル(new.txt)と同じ内容に戻ります。

$ patch < diff.patch 
patching file old.txt

ファイルが同一かどうかをdiffコマンドで、確認します。以下のようにidenticalと出力されれば、2つのファイルは同じものです。

$ diff -s old.txt new.txt
Files old.txt and new.txt are identical

リバースパッチを適用します(オプション -R)。古いファイル(old.txt)にリバースパッチが適用され、新しくなった内容が元の古い内容に戻します。

$ patch -R < diff.patch 
patching file old.txt

関連コマンド

diff

テキスト の人気記事

  1. Linuxコマンド【 tail 】ファイルの末尾数行を表示する
  2. Linuxコマンド【 cut 】ファイルの各行から一部分を切り出す
  3. Linuxコマンド【 tr 】文字列を変換・削除する
  4. コマンドリファレンス
  5. Linuxコマンド【 head 】ファイルの先頭数行を表示する
  6. Linuxコマンド【 strings 】バイナリファイルの中身を確認する
  7. Linuxコマンド【 nkf 】文字コードを変換する
  8. expand - タブをスペースに変換 - Linuxコマンド
  9. indent - C言語のソースコードを整形 - Linuxコマンド
  10. Linuxコマンド【 iconv 】ファイルの文字コードを変換する

関連記事(一部広告含む)