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. patch - diff差分ファイルをオリジナルファイルに適用 - Linuxコマンド
  7. Linuxコマンド【 iconv 】ファイルの文字コードを変換する
  8. manコマンドの表示を日本語にする方法
  9. seq - 連続した数字の列を出力・表示 - Linuxコマンド
  10. Linuxコマンド【 grep 】パターンにマッチする行を表示する

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