diffって何?

はじめに_

このページでは、Unixコマンドのdiffと設定ファイルの編集の仕方について書いてあります。

diffとは何か?_

diffは二つのテキストファイルの差分を例示するコマンドです。以下の内容のテキストファイル comp1.txtを用意してください。

begin
0
1
2
3
4
5
6
end

次に、comp1とはちょっとだけ内容の違うファイルcomp2.txtを用意してください。

begin
0
1
20
3
40
5
6
end

この二つのファイルの違いをチェックします。

% diff comp1.txt comp2.txt
4c4
< 2
---
> 20
6c6
< 4
---
> 40

この出力結果の意味は以下のとおり

  • 「4c4」というのは「comp1.txtの4行目とcomp2.txtの4行目を比較しています」という意味。
  • 「< 2」というのは「comp1.txtの4行目は『2』」という意味。
  • 「> 20」というのは「comp2.txtの4行目は『20』」という意味。

このようにして、異なる行の部分だけを抜き出して表示してくれる。

設定ファイルの編集_

設定ファイルの編集例で以下のような表示をしていることがあるが、これは、20ptex-jisfonts.map.orgと20ptex-jisfonts.mapの違いをdiffコマンドで表示することで、編集箇所を明らかにしている。

% diff 20ptex-jisfonts.map.org 20ptex-jisfonts.map
2c2
< /usr/share/fonts/truetype/kochi/kochi-mincho.ttf
---
> @Mincho       Roman|Mincho@
4c4
< /usr/share/fonts/truetype/kochi/kochi-gothic.ttf
---
> @Gothic       SansSerif|Gothic@

たとえば、上記の例だと、2行目と4行目が異なっており、上のように書かれているものを下のように変更しろという意味になる(理由は、上のものが20ptex-jisfonts.map.orgの内容だから。拡張子に.orgとか、.oldとあるのは普通は編集前のファイル)。

diffとpatchコマンド_

diffの結果を半自動的に反映させるコマンドがpatch。プログラムの修正などによく使われる。詳しくは以下のリンク先を参照。

戻る_