diffの使い方 diffを極めよう

diffコマンドの使い方

diffコマンドとは?

2つのファイルやコマンドの結果を比較して差分を表示してくれるコマンドです。

変更箇所をわかりやすく表示できます。実際にdiffコマンドを使ってみましょう。

  • $ diff 変更前ファイル 変更後ファイル
  • $ diff  <(コマンド) <(コマンド)

というように使います。<( )を使えばコマンド出力もファイルとして扱えるのでdiffで比較できるようになります。例を見てみましょう。

file1とfile2があります。これは一行目のdiffの一文字目が大文字・小文字で異なっています。

bash
$ cat file1
diff
Diff
diff diff
bash
$ cat file3
Diff
Diff
diff diff

これをdiffで比較してみます。<diffというのはdiff file1 file3の左側・file1を指しています。>は右側file3を指しています。file1にはdiffがあってfile3にはDiffがあるよといっています。

一番上には1c1とありますが、これはファイル1の1行目がchangeしてfile3の1行目になっているよということです。

bash
 diff file1 file3
1c1
< diff
---
> Diff

diffの結果には

  • 1c1→ 左のファイル1行目と→ファイル1行目が変わっている。
  • 1a2→左ファイル1行目の後に右ファイル2行目が挿入されている
  • 2d1→左のファイル2行目がなくなって右ファイルの1行目直後になっている

例を見てみる。

bash

$ diff num1 num2
2d1
< b
f $ cat num1
a
b
c

$ cat num2
a
c

bash

$ diff num1 num2
1a2
> g
$ cat num1
a
b
c

$ cat num2
a
g
b
c

diffを見やすくする

変更点が少ないファイル同士のdiffはわかりやすいですが、変更点が多い場合はどこがどう変更されたかが分かりにくいです。それを見やすくするオプションを紹介します。

横並びで表示する-yオプション

横並びでどこが変更されたかをわかりやすく表示するにはyオプションを使用します。

bash

$ diff num1 num2 -y
a a
b <
c c

pi@raspberrypi:~/diff $ diff file1 file2 -y
diff diff
Diff | diff
diff diff | diff diff
a a
b b
c c

ソースコード

-wでスペースの違いは無視する

diffでは文字の間のスペースも違いとして認識されます。-wを使うとスペースは無視されます。改行は無視されません。また、-bを使う場合はスペースの数だけ違う場合は無視されます。

大文字小文字を無視する -i

-iオプションを利用すると英語の大文字と小文字を無視します。

改行の違いを無視する -B

改行が追加されたり、削除された変更については無視します。

vimdiff ビジュアルでわかりやすく表示

vimdiffはdiffの結果をビジュアル的に見やすく表示するコマンドです。変化があった行に関しては色付きの背景で表示、変化があった箇所はハイライトされています。変化は左右を見比べればわかります。$ vimdiff 左ファイル 右ファイル という位置関係です。

vimdiffの表示

vimdiffの表示

コメントを残す

メールアドレスが公開されることはありません。