Saturday, May 23, 2009 / Bash, Ubuntu, good-old-unix

How to use diff and patch

ブログ構築システムをつくっていて、 ディレクトリの深さに応じて、パスの指定方法がちょっとだけ異なるテンプレートファイルを 使う必要が出てきた。 このテンプレートをコピーしていると共通部分に変更が生じたときに 全部のテンプレートを書き直す必要が生じてしまうので、diff と patch を 使って対処することに。

具体例

original.txt と customized.txt がある。
original.txt をほんの少し変更したファイルが customized.txt。 この差分をファイル(patch.txt)に取っておいて、original.txt と patch.txt から customized.txt を作り出す方法。

$ diff original.txt customized.txt -u > patch.txt
$ patch < patch.txt
$ diff original.txt customized.txt

まとめ

  • -u オプションにより patch.txt にファイル名が記録される
  • したがって、patch コマンドを使うときにファイル名を指定する必要はない
  • patch < patch.txt した場合は、original.txt が上書きされる点に注意