No.043テキスト処理
diff
ディフ・差分比較
二つのファイルやディレクトリの差異を比較します。差分形式の理解は、変更確認とレビューの基礎になります。
答えよく使う形
$ diff -u old.txt new.txt
--- old.txt +++ new.txt @@ ...
$ diff old.conf new.conf
$ diff -r dir1 dir2
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
覚える順番の中で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