名前
diff3 - 3
つのファイル間にある違いを探す
書式
diff3 [-3aeimxAETX] [-L LABEL]
[--easy-only] [--ed] [--initial-tab]
[--label=LABEL] [--merge] [--overlap-only]
[--show-all] [--show-overlap] [--text] MINE OLDER
YOUR
diff3 [-v] [--help] [--version]
説明
diff3 は 3
つのファイルを比較し、それらの違いの説明を出力する。
比較対象となるファイルは
MINE, OLDER, YOURS
である。これら三つのファイルのうちの一つを
`-'
としてもよく、その場合そのファイルは標準入力から読み込まれる。
通常 diff3
は自分の作業のために
diff
を起動する。しかし
BDIFF
環境変数に他のプログラムを設定すれば、
そのプログラムを使うように変更できる。
オプション
- -3, --easy-only
- -e
と似ているが、重複していない変更部分だけを出力する。
- -a, --text
- ファイルがテキストには見えないような場合でも、
全てのファイルをテキストとみなして
1
行ずつ比較を行う。
- -e, --ed
- OLDER から YOURS
へのすべての変更を
MINE
にマージするような
ed
スクリプトを生成する。
- -i
- System V 互換性のために、
ed
スクリプトの末尾に
`w' コマンドと `q'
コマンドを生成する。このオプションは
-AeExX3
のいずれかのオプションと共に用いなければならない。また
-m
と同時に指定することはできない。
- -m, --merge
- ed スクリプトを 1
番目のファイルに適用し、その結果を標準出力に送る。
diff3 の出力を ed
に送るのと異なり、
このオプションの動作はバイナリファイルや改行されていない行にも適用できる。
ed
スクリプトのオプションが何も指定されなければ、
-A
を暗黙のうちに指定する。
- -x, --overlap-only
- -e
と似ているが、重複している変更だけを出力する点が異なる。
- -A, --show-all
- OLDER から YOURS
への全ての変更を
MINE
にマージする。重複している変更はブラケット行で囲って出力する。
- -E, --show-overlap
- -e
と似ているが、重複部分のブラケット行の第
1・第 3 行が異なる。
-E
では重複している変更は以下のようになる。
<<<<<<< MINE
lines from MINE
=======
lines from YOURS
>>>>>>> YOURS
- -L LABEL,
--label=LABEL
- -A, -E, -X
オプションのブラケット行に、ラベル
LABEL
を用いる。このオプションはそれぞれの入力ファイルに対応して
3
つまで与えることができる。
デフォルトのラベルは入力ファイルのファイル名である。したがって
diff3 -L X -L Y -L Z -m A B C は diff3 -m A B C
と同じように動作するが、
入力が A, B, C
ではなく X, Y, Z
のものであるかのような出力となる。
- -T, --initial-tab
- -X
- -E
と似ているが、重複している変更だけを出力する点が異なる。
別の言い方をすれば、
-x と似ているが、
-E
のように変更をブラケット行で囲う点が異なる。
- --help
- 標準出力に使用方法のメッセージを出力して正常終了する。
- -v, --version
- diff3
のバージョン番号を出力する。
出力形式
それぞれの hunk
(違いを表すテキストブロック)
は `===='
という行から始まる。
3 ファイルとも異なる
hunk では ただの `===='
となり、 1
ファイルが異なっている
hunk では `1', `2', `3'
のいずれかが、その異なっているファイルを示すために付加される。
hunk には 2 つ、または 3
つの入力行のセットが含まれ、
それぞれに行セットがどのファイル由来のものかを示す
1 つまたは 2
つのコマンドが前置される。
デフォルトの動作では、入力行の前には
2
つのスペースが置かれ、
コマンドと区別できるようになっている。
-T
が指定されると、代わりにタブを用いるので、
入力にあったタブによる桁揃えが正しく保存される。
コマンド形式
- FILE:La
- この hunk は FILE の L
行以降に現れるべきもので、そのファイルには存在していない。
このファイルを修正して他のファイルと同じにするには、
他の行からの hunk
の行を追加しなければならない。例えば
`1:11a' は、その hunk
はファイル 1 の 11
行目以降に追加すべきもので、
ファイル 1
には含まれていないこと示す。
- FILE:Rc
- この hunk には、 FILE
の行範囲 R
が含まれている。行範囲
R は 2
つの行番号をコンマで区切ったものである。
数字が一つだったら 1
行だけの範囲と解釈される。
このファイルを編集して他のファイルと同じにするには、
その行範囲を、他のファイルからとってきて変更しなければならない。
例えば `2:11,13c' は、この hunk
は 2
番目のファイルの
11〜13
行目からとってきたものであることを示す。
入力行セットの最後の行が改行で終わっていない場合は、
出力の次の行が `\'
で始まるので、改行で終わっている場合と区別できる。
返り値
diff3
は以下のどれかの値で終了する:
- 0
- diff3
は成功し、重複している変更
(衝突)
は存在しなかった。
- 1
- 重複が見付かった。
- 2
- 何らかのエラーが起こった。
注意
プログラムのバグについては
bug-gnu-utils@gnu.org
に報告してください。
ページの更新は Ragnar Hojland
Espinosa <ragnar@ragnar-hojland.com>
が行っています。