diff ディフ

英語表記diff

日本語表記差分比較

正式名称diff

危険度安全

What does it mean?

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

Command Quest

diff を今日の道具にする

二つのファイルやディレクトリの差異を比較します。差分形式の理...

$ diff [オプション]... ファイル1 ファイル2
関連用語10
次のコマンド0
FAQ1
参照3

概要

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

基本構文

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. 1行だけ違う2ファイルを作り、diff -uで確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.2 フィルタを使ったテキストストリームの処理
    根拠: official
    diffは、テキスト処理系の基本フィルタとしてLinuCレベル1の範囲に関わります。
  • LPIC-1
    範囲: 103.2 フィルタを使ったテキストストリームの処理
    根拠: official
    diffは、LPIC-1でテキストストリームへフィルタを適用する技能と関係します。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    diffは、ファイル操作またはテキスト処理の基本を支えるため、試験横断の共通知識として価値があります。

オプション

  • -u
    統一差分形式で表示します。
    diff -u old.txt new.txt
  • -r
    ディレクトリを再帰比較します。
    diff -r dir1 dir2
  • -y
    横並びで表示します。
    diff -y left right

実行結果サンプル

  • diff -u old.txt new.txt
    --- old.txt
    +++ new.txt
    @@ ...

戻り値コード

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

使用例

  • diff old.conf new.conf
  • diff -u old.txt new.txt
  • diff -r dir1 dir2

よくあるエラー

  • 終了コード1を異常だと思った
    原因: diffでは差分ありを1で表します。
    対処: 0は同一、1は差分あり、1超はエラーと覚えます。

導入・互換性情報

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

注意点 / セキュリティリスク

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

FAQ

  • Q. cmpとの違いは何ですか。
    A. diffは人が読める差分表示に向き、cmpはバイト単位比較に向きます。

関連用語

  • ソースコード
  • build
  • configuration drift
  • Git
  • revision
  • branch
  • merge
  • rebase
  • commit
  • code review

参照リンク

関連記事