diff

テキスト処理

書き方

diff -u [old] [new]

二つのファイルのどこが変わったかを示します。patch やコードレビューが期待する形は -u で、違いがあると終了コードが 1 になるため set -e のスクリプトはここで止まります。

よく使うオプション

オプション意味
-uUnified output, the format patch and code review expect
-rCompare two directory trees
-qOnly say whether the files differ
-wIgnore all whitespace
-iIgnore case
-NTreat a missing file as empty, which patches need

diff -u old.conf new.conf > fix.patch

Writes a patch file.

diff -rq dirA dirB

Lists which files differ between two trees.

diff <(sort a.txt) <(sort b.txt)

Compares two files ignoring line order (bash).

パイプでつないで使うのが本来の形です。ひとつで全部やるより、三つつないだ方が短くなります。

読み方

  • 角括弧 [ ] は省いてよい部分です。
  • 三点 … は複数並べられるという意味です。
  • オプションは大文字小文字を区別します — -r と -R が別物のコマンドもあります。

よくある質問

Q. diff は何をしますか。

二つのファイルのどこが変わったかを示します。patch やコードレビューが期待する形は -u で、違いがあると終了コードが 1 になるため set -e のスクリプトはここで止まります。

Q. どう打ちますか。

diff -u [old] [new] — 角括弧は省いてよい部分です。

Q. よく使うオプションはいくつですか。

ここにまとめたのは6個です。全部は man diff にあります。このコマンドはテキスト処理の仲間です。

関連するコマンド

man ページ: man diff