概要
二つのファイルやディレクトリの差異を比較します。差分形式の理解は、変更確認とレビューの基礎になります。
基本構文
diff [オプション]... ファイル1 ファイル2詳細解説
diffは、二つの入力を比較して違いを示すコマンドです。変更があるかどうかだけでなく、どこがどう変わったかを行単位で把握できます。設定ファイルの変更確認、生成物比較、パッチ前後の確認で欠かせません。
実務では統一差分形式の-uが特によく使われます。人にも読みやすく、他の道具とも連携しやすいためです。ディレクトリ比較では-rが便利ですが、対象が広いと差分量も大きくなるため、範囲を絞る意識が必要です。
このコマンドを使う場面
設定変更点を確認したい時、前後の出力差を見たい時、ディレクトリ単位で構成差を洗い出したい時に使います。
まず安全に試す方法
1. printf 'anbn' > old.txt
2. printf 'ancn' > new.txt
3. diff -u old.txt new.txt
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
1行だけ違う2ファイルを作り、diff -uで確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.2 フィルタを使ったテキストストリームの処理根拠: officialdiffは、テキスト処理系の基本フィルタとしてLinuCレベル1の範囲に関わります。
-
LPIC-1
範囲: 103.2 フィルタを使ったテキストストリームの処理根拠: officialdiffは、LPIC-1でテキストストリームへフィルタを適用する技能と関係します。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorialdiffは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。
実行結果サンプル
-
diff -u old.txt new.txt--- old.txt +++ new.txt @@ ...
戻り値コード
- 0 差分がありません。
- 1 差分があります。
- >1 読取失敗などのエラーです。
使用例
diff old.conf new.confdiff -u old.txt new.txtdiff -r dir1 dir2
よくあるエラー
-
終了コード1を異常だと思った 原因: diffでは差分ありを1で表します。対処: 0は同一、1は差分あり、1超はエラーと覚えます。
導入・互換性情報
POSIXの基本比較は共通です。GNU diffutilsでは統一差分や横並び表示など実務向け機能が豊富です。
注意点 / セキュリティリスク
危険度は低いですが、バイナリや順不同データに対してそのまま比較すると、意味の薄い差分が大量に出ることがあります。前処理も検討してください。
FAQ
-
Q. cmpとの違いは何ですか。 A. diffは人が読める差分表示に向き、cmpはバイト単位比較に向きます。
関連用語
参照リンク
- カテゴリー: Text Processing
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎