[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

diff3【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point3つのファイルの中身の違いを表示するよ

スポンサーリンク

簡単に書くよ

diff3【コマンド】とは

3つのファイルの中身の違いを確認するときに使うコマンド
です。

image piyo

詳しく書くよ

UNIX系(LinuxとかMacとか)で使えます。

書き方は

diff3 [オプション] [ファイル名1] [ファイル名2] [ファイル名3]

です。
オプションはそこそこあります。

オプション説明
-a指定されたファイルテキストファイル以外の場合も中身をテキストと見なして比較を行う
-A[ファイル名2] から[ファイル名3]への変更内容を[ファイル名1] に取り込む際に必要な差分情報を表示するよ
-Bもう使わないよ
-e[ファイル名2] から[ファイル名3]への変更内容を[ファイル名1]に取り込むためのedスクリプトを生成するよ
-E「-e」と似た感じだけど出力結果の見た目がちょっと変わるよ(適当な意訳)
-iSystemV互換性とやらのために、edスクリプトの末尾に「w」コマンドと「q」コマンドを生成するらしい。このオプションは「-A」「-e」「-E」「-x」「-X」「-3」のいずれかのオプションと併用する必要があるらしい。ついでに「-m」とは併用しちゃ駄目らしい。「らしい」ばかりでごめんなさいね。だってイマイチよく分からないんだもん
-L【ラベル】「-A」「-E」「-X」オプションのブラケット行に【ラベル】を使用するらしい
-m[ファイル名2] から[ファイル名3]への変更内容を[ファイル名1]に反映するとどうなるかを表示するよ
-Tnormal形式の場合、行頭のスペース2つをタブに置き換えるよ
-vバージョン情報を表示する
-x「-e」と似た感じだけど重複している変更部分だけを表示するよ
-X「-E」と似た感じだけど重複している変更部分だけを表示するよ
-3「-e」と似た感じだけど重複していない変更部分だけを表示するよ

などですね。

「diff3」コマンドコマンドライン上から3つのファイルを比較したい際に使います。
「diff3」コマンドは「diff」コマンドよりちょっとだけ考え方がややこしいのでご注意ください。

「diff」コマンドは単純に2つのファイルの違いを見たいときに使うコマンドでした。
それの3ファイル版が「diff3」……ではあるのですが「diff3」では基準となるファイルがあって、それに異なる変更を加えた2つのファイルがあるイメージです。

diff:「旧ファイル→新ファイル」の変更箇所を比較
diff3:「旧ファイル→新ファイル1、新ファイル2」の変更箇所を比較


ですね。

例えば元々のファイル「ファイルA」がありました。
この「ファイルA」にマコトさんが手を加えて「ファイルA2」を作りました。
この「ファイルA」にササキさんが手を加えて「ファイルA3」を作りました。

この3つのファイル「ファイルA」「ファイルA2」「ファイルA3」を比較するときに使うのが「diff3」コマンドです。
基準となる「ファイルA」は2番目に指定して

diff3 「ファイルA3」 「ファイルA」 「ファイルA2」

のような書き方をします。

オプション未指定時は単純に3つのファイル「ファイルA」「ファイルA2」「ファイルA3」の違いが表示されます。

ではここで「-e」オプションを指定して

diff3 -e 「ファイルA3」 「ファイルA」 「ファイルA2」

と書くとどうなるでしょう。
結果は「ファイルA」から 「ファイルA2」への変更内容を「ファイルA3」に反映するために必要な情報が表示されます。
日本語にすると「マコトさんが加えた変更(ファイルAとファイルA2の差分)をササキさんが変更したファイル(ファイルA3)に反映させるための情報」となります。
要はマコトさんの変更内容とササキさんの変更内容を合体させるための情報ですね。

そして「-m」オプションはこの合体結果を表示するオプションです。
無事合体できれば合体結果の「ファイルA3」(になる予定の)中身を、合体できなければ「ここの変更箇所とここの変更箇所、どっちを残すのか分からなかった~」的に差分情報を表示してくれるのが「-m」オプションになります。

「3つのファイルを比較する」というよりは「元ファイルと2つの変更済みファイルを比較する」と表現した方が正しいのでしょうね。
例えば1つのソースファイルに二人のプログラマさんが別々に修正を入れてしまった場合などに使うコマンドなのだと思います。

……できれば活躍の場が無いと嬉しいコマンドですね(-A-)

image piyo2

一言でまとめるよ

まぁ「diff3」ってコマンドが出てきたら「3つのファイルの中身の違いを抽出するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク