概要
diff -uは、2つのファイルの内容を比較し、差分を統合(Unified)形式で出力します。この形式は、変更された行とその周辺のコンテキストを一緒に表示するため、どの部分がどのように変更されたかを容易に把握できます。これは特にソースコード管理や設定ファイルの変更履歴追跡に不可欠なツールです。
主な特徴
- 統合(Unified)形式で差分を表示
- 変更点のコンテキストを提供
- コードレビューおよびバージョン管理に有用
- 追加/削除/変更点を明確に区別
主なオプション
diffコマンドは様々なオプションを提供しますが、ここでは`-u`オプションと共に頻繁に使用されるオプションを説明します。
出力形式
比較動作
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`diff` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
diff -uコマンドを活用した様々な使用例です。
2つのファイルのUnified形式での差分比較
diff -u file1.txt file2.txt
file1.txtとfile2.txtの差分をUnified形式で出力します。
2つのディレクトリのファイルを再帰的に比較
diff -ur dir1 dir2
dir1とdir2ディレクトリ内のすべてのファイルを再帰的に比較し、Unified形式で出力します。
空白の変化を無視してファイルを比較
diff -uw file1.txt file2.txt
ファイル内容の空白文字(スペース、タブなど)の変化を無視し、実質的な内容の差分のみを比較します。
特定のパターンの行を無視してファイルを比較
diff -u -I '^#' config1.conf config2.conf
コメント(#で始まる行)を無視して、config1.confとconfig2.confファイルの差分を比較します。
Unified出力をパッチファイルとして保存
diff -u old_file.txt new_file.txt > changes.patch
2つのファイルの差分をUnified形式で出力し、その結果を'changes.patch'ファイルに保存します。このファイルは'patch'コマンドで適用できます。
ヒントと注意点
diff -uの出力結果を効果的に解釈し、活用するためのヒントです。
Unified出力の解釈方法
diff -uの出力は、以下の記号を使用して変更点を表します。
- --- (ハイフン3つ): 元の(old)ファイルのパスとタイムスタンプを示します。
- +++ (プラス3つ): 新しい(new)ファイルのパスとタイムスタンプを示します。
- @@ -OLD_START,OLD_COUNT +NEW_START,NEW_COUNT @@: 'チャンクヘッダー'で、変更が発生したファイルの行番号と範囲を示します。
- - (ハイフン): 元のファイルにのみ存在する行で、削除された行を意味します。
- + (プラス): 新しいファイルにのみ存在する行で、追加された行を意味します。
- (スペース): 両方のファイルに存在する行で、変更のないコンテキスト行を意味します。
patchコマンドとの連携
diff -uで生成された出力は、`patch`コマンドの入力として使用できます。これにより、一方のファイルの変更点をもう一方のファイルに簡単に適用したり、元に戻したりできます。例えば、`diff -u old_file new_file > changes.patch`コマンドでパッチファイルを生成した後、`patch -p0 < changes.patch`コマンドで`old_file`に`changes.patch`の変更を適用して`new_file`と同じ状態にすることができます。