diff の使い方メモ

ファイルが同じか違うかだけが知りたい

diff -qs file1 file2
  • -q: 違うかどうかだけ表示
  • -s: 同じ場合もメッセージを表示

2つのファイルの違う箇所を詳細に知りたい

diff -y --left-column -W 180 -w -d -y
  • -y: side-by-side 形式で表示
  • --left-column: side-by-side 形式で共通な行を左側の列のみに表示
  • -W 180: side-by-side 表示で横幅を 180 文字に指定 (80文字のターミナル2つ分+α)
  • -d: できるだけ差分が少なくなるように比較
  • -w: スペースを無視して比較

`--suppress-common-lines' をつけると同じ行を捨てて表示するようになります。

diff の戻り値

  • 0: 変更なし
  • 1: 変更あり
  • 2: エラー

ファイルが変更されている場合にバックアップをとる

下記のようなシェルスクリプトを書くことになります。

diff backup.txt original.txt > /dev/null 2>&1
if [ $? -eq 1 ]; then
  cp -a original.txt backup.txt
fi