No.043テキスト処理

diff

ディフ・差分比較

知識レベル 基礎安全に試せる一般ユーザーで使える

二つのファイルやディレクトリの差異を比較します。差分形式の理解は、変更確認とレビューの基礎になります。

答えよく使う形

  1. 統一差分形式で変更箇所を表示します
  2. ディレクトリを再帰比較します
  3. 横並びで表示します
visitor@goodly: ~

$ diff -u old.txt new.txt

--- old.txt
+++ new.txt
@@ ...

$ diff old.conf new.conf

$ diff -r dir1 dir2

覚える順番の中でLPIC-1・21 駅め / 106

どんなコマンド?

こんなときに

設定変更点を確認したい時、前後の出力差を見たい時、ディレクトリ単位で構成差を洗い出したい時に使います。

diffは、二つの入力を比較して違いを示すコマンドです。変更があるかどうかだけでなく、どこがどう変わったかを行単位で把握できます。設定ファイルの変更確認、生成物比較、パッチ前後の確認で欠かせません。

実務では統一差分形式の-uが特によく使われます。人にも読みやすく、他の道具とも連携しやすいためです。ディレクトリ比較では-rが便利ですが、対象が広いと差分量も大きくなるため、範囲を絞る意識が必要です。

書き方とオプション

組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。

$ diff

使用例と実行結果

行を押すとコピーできます。

--- old.txt
+++ new.txt
@@ ...
統一差分形式で変更箇所を表示します。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 1

つまずいたとき

終了コード1を異常だと思った

原因diffでは差分ありを1で表します。

こうする0は同一、1は差分あり、1超はエラーと覚えます。

終わったときの数(戻り値)

$ echo $?

  • 0差分がありません。
  • 1差分があります。
  • >1読取失敗などのエラーです。

気をつけることと入れ方

気をつけること

危険度は低いですが、バイナリや順不同データに対してそのまま比較すると、意味の薄い差分が大量に出ることがあります。前処理も検討してください。

環境による違い

POSIXの基本比較は共通です。GNU diffutilsでは統一差分や横並び表示など実務向け機能が豊富です。

確かめた環境2026-04-09 に確認

よくある質問

cmpとの違いは何ですか。

diffは人が読める差分表示に向き、cmpはバイト単位比較に向きます。

資格試験では

  • LinuC レベル1大事1.03.2 フィルタを使ったテキストストリームの処理
  • LPIC-1大事103.2 フィルタを使ったテキストストリームの処理
  • 共通基礎大事Linuxコマンド基礎

diff を最後まで読みました。

Linux コマンド辞典に戻る20 / 144

Goodly のメニュー