Manpages

名 前

diff − 2 つ の フ ァ イ ル 間 の 違 い を 探 す

書 式

diff [−abcdefhilnpqrstuwyBEHNPT] [−LINES] [−x PATTERN] [−C LINES] [−D NAME] [−F REGEXP] [−I REGEXP] [−L LABEL] [−S FILE] [−U LINES] [−W COLUMNS] [−X FILE] [−−binary] [−−brief] [−−changed−group−format=fORMAT] [−−context[=LINES]] [−−diff−program=PROGRAM] [−−ed] [−−exclude=PATTERN] [−−exclude-from=FILE] [−−expand−tabs] [−−forward−ed] [−−from−file=FILE] [−−horizon−lines=LINES] [−−ifdef=NAME] [−−ignore−all−space] [−−ignore−blank−lines] [−−ignore−case] [−−ignore−file−name−case] [−−ignore−matching−lines=REGEXP] [−−ignore−space−change] [−−ignore−tab−expansion] [−−inhibit−hunk−merge] [−−initial−tab] [−−label=LABEL] [−−left−column] [−−line−format=FORMAT] [−−minimal] [−−new−file] [−−new−group−format=FORMAT] [−−new−line−format=FORMAT] [−−no−ignore−file−name−case] [−−old−group−format=FORMAT] [−−old−line−format=FORMAT] [−−paginate] [−−rcs] [−−recursive] [−−report−identical−files] [−−sdiff−merge−assist] [−−show−c−function] [−−show−function−line=REGEXP] [−−side−by−side] [−−speed−large−files] [−−starting−file=FILE] [−−strip−trailing−cr] [−−supress−common−lines] [−−text] [−−to−file=FILE] [−−unchanged−group−format=FORMAT] [−−unchanged−line−format=FORMAT] [−−unidirectional−new−file] [−−unified[=LINES]] [−−width=COLUMNS] FROMFILE TOFILE

diff [−v] [−−help] [−−version]

説 明

diff は 2 つ の フ ァ イ ル を 比 較 し 、 そ れ ら の 違 い を 記 述 し て 出 力 す る 。 も っ と も 簡 単 な 場 合 は 、 比 較 対 象 の フ ァ イ ル は FROMFILETOFILE で あ る 。 こ れ ら の フ ァ イ ル の う ち の ど ち ら か は ’’ と 指 定 し て も 良 い 。 こ の 時 は そ の フ ァ イ ル は 標 準 入 力 か ら 読 み 込 ま れ る 。

FROMFILE が デ ィ レ ク ト リ で TOFILE が デ ィ レ ク ト リ で は な い 場 合 、 diff は デ ィ レ ク ト リ FROMFILE に あ る 、 フ ァ イ ル 名 が TOFILE の フ ァ イ ル を 比 較 対 象 に す る (逆 も 同 様 )。 デ ィ レ ク ト リ で な い 方 の 指 定 を ’’ に す る こ と は で き な い 。 両 方 が デ ィ レ ク ト リ の と き は 、 diff は 双 方 の デ ィ レ ク ト リ に あ る 、 対 応 す る フ ァ イ ル を ア ル フ ァ ベ ッ ト 順 に そ れ ぞ れ 比 較 す る 。 比 較 は 再 帰 的 に は 行 わ れ な い が 、 −r ま た は −−recursive オ プ シ ョ ン を 指 定 す れ ば 再 帰 的 に な る 。 diff は デ ィ レ ク ト リ の 内 容 そ の も の を フ ァ イ ル の よ う に 比 較 す る こ と は し な い 。 フ ル パ ス 指 定 の フ ァ イ ル は ’’ で あ っ て は な ら な い 。 な ぜ な ら 標 準 入 力 に は 名 前 が な い の で 、 「 同 名 の フ ァ イ ル 」 と い う 概 念 が 使 え な い か ら で あ る 。

−−from−file=FILE オ プ シ ョ ン が 与 え ら れ る と 、 任 意 の 数 の フ ァ イ ル 名 を 与 え る こ と が で き 、 そ れ ぞ れ の フ ァ イ ル は FILE と 比 較 さ れ る 。 同 様 に 、 −−to−file=FILE オ プ シ ョ ン が 与 え ら れ る と 、 そ れ ぞ れ 指 定 さ れ た フ ァ イ ル は FILE と 比 較 さ れ る 。 [訳 注 : 2.7 に は こ れ ら の オ プ シ ョ ン は 存 在 し な い ]

オ プ シ ョ ン

LINES 異 な っ て い る 部 分 の 前 後

LINES 行 (整 数 ) 分 の コ ン テ ク ス ト を 表 示 す

る 。 こ の オ プ シ ョ ン は 出 力 形 式 自 体 の 指 定 は 行 わ な い 。 し た が っ て −c−u オ プ シ ョ ン と 一 緒 に 用 い な い と 、 な ん の 効 果 も 持 た な い 。 こ の オ プ シ ョ ン は obsolete で あ る 。 patch(1) が 正 し く 動 作 す る に は 、 少 な く と も 2 行 の コ ン テ ク ス ト が 必 要 で あ る 。

−a, −−text フ ァ イ ル が テ キ ス ト に は 見 え な い よ う な 場 合 で も 、 全 て の フ ァ イ ル を テ キ ス ト と み な し て 1 行 ず つ 比 較 を 行 う 。
−b, −−ignore−space−change
ス ペ ー ス の 数 だ け が 違 う 場 合 に は 違 い を 無 視 す る 。 不 完 全 な 行 は 無 視 さ れ る 。

−c

context 出 力 形 式 を 用 い る 。

−d, −−minimal ア ル ゴ リ ズ ム を 変 更 し 、 よ り 小 さ な 差 分 が 生 成 で き る よ う に す る 。 こ れ を 使 う と diff は 遅 く な る (非 常 に 遅 く な る 場 合 も あ る )。
−e, −−ed

ed(1) の ス ク リ プ ト 形 式 で 出 力 す る 。

−f, −−forward−ed

ed の ス ク リ プ ト と 一 見 同 じ よ う な 出 力 を す る 。 し か し 出 力 に 現 れ る 順 序 が 異 な る [訳 注 : し た が っ て ed で は 使 え な い ]。

−h 現 在 は 何 も 効 果 を 持 た な い 。

Unix と の 互 換 性 の た め に 存 在 し て い る 。

こ れ は 推 奨 さ れ な い 。

−i, −−ignore−case 英 大 文 字 と 小 文 字 の 違 い を 無 視 す る 。
−l, −−paginate
出 力 を pr(1) に 通 し て ペ ー ジ 付 け を 行 う 。
−n, −−rcs

RCS 形 式 の diff を 出 力 す る 。 −f と 似 て い る が 、 そ れ ぞ れ の コ マ ン ド は 処 理 す る 行 数 を 指 定 す る 。

−p, −−show−c−function 変 更 が ど の C 関 数 で 行 わ れ た の か を 表 示 す る 。 ’−F’^[_a−zA−Z$]’’ と 同 じ 。
−q, −−brief
フ ァ イ ル が 違 う か ど う か だ け を 報 告 す る 。 違 い の 詳 細 は 報 告 し な い 。
−r, −−recursive
デ ィ レ ク ト リ を 比 較 す る と き 、 見 付 か っ た サ ブ デ ィ レ ク ト リ を す べ て 再 帰 的 に 比 較 す る 。
−s, −−report−identical−files

2 つ の フ ァ イ ル が 同 じ だ っ た と き も 報 告 す る 。

−t, −−expand−tabs 入 力 フ ァ イ ル で の タ ブ に よ る 位 置 あ わ せ を 保 存 す る た め 、 出 力 の タ ブ を ス ペ ー ス に 展 開 す る 。

−u

unified 出 力 形 式 を 用 い る 。

−w, −−ignore−all−space 行 を 比 較 す る と き ス ペ ー ス を 無 視 す る 。 不 完 全 な 行 は 無 視 さ れ る 。
−x
PATTERN, −−exclude=PATTERN デ ィ レ ク ト リ を 比 較 す る と き 、 フ ァ イ ル 名 の base 部 が PATTERN に マ ッ チ す る フ ァ イ ル や サ ブ デ ィ レ ク ト リ を 無 視 す る 。
−y, −−side−by−side

side-by-side 出 力 形 式 を 用 い る 。

−B, −−ignore−blank−lines 空 行 を 挿 入 ・ 削 除 す る だ け の 変 更 を 無 視 す る 。
−C
LINES, −−context[=LINES]

context 出 力 形 式 を 用 い 、 LINES 行 (整 数 値 ) の コ ン テ ク ス ト を 表 示 す る 。 LINES が 与 え ら れ な け れ ば 3 行 表 示 す る 。 patch が 正 し く 動 作 す る た め に は 、 少 な く と も 2 行 の コ ン テ ク ス ト が 必 要 で あ る こ と が 多 い 。

−D NAME, −−ifdef=NAME

if-then-else 形 式 で マ ー ジ さ れ た 出 力 を 行 い 、 プ リ プ ロ セ ッ サ の 条 件 マ ク ロ に NAME を 用 い る 。

−E, −−ignore−tab−expansion タ ブ 展 開 に よ る ス ペ ー ス の 変 更 を 無 視 す る 。
−F
REGEXP, −−show−function−line=REGEXP

context 形 式 と unified 形 式 に お い て 、 各 差 分 hunk (テ キ ス ト ブ ロ ッ ク ) に 対 し 、 そ の 前 方 で REGEXP に マ ッ チ し た 最 後 の 行 の 一 部 を 表 示 す る 。

−H, −−speed−large−files 小 さ な 変 更 が 大 量 に あ る よ う な 大 き な フ ァ イ ル を 高 速 に 扱 う た め に 、 ヒ ュ ー リ ス テ ィ ッ ク な 手 法 を 用 い る 。 短 縮 形 式 −H は 推 奨 さ れ な く な っ た 。
−I
REGEXP, −−ignore−matching−lines=REGEXP

REGEXP に マ ッ チ す る よ う な 行 を 挿 入 ・ 削 除 す る だ け の 変 更 を 無 視 す る 。

−L LABEL, −−label=LABEL

context 形 式 と unified 形 式 の ヘ ッ ダ に 、 フ ァ イ ル 名 で は な く LABEL を 用 い る 。 短 縮 形 式 −L は 推 奨 さ れ な く な っ た 。

−N, −−new−file デ ィ レ ク ト リ を 比 較 す る 際 、 片 方 の デ ィ レ ク ト リ に の み フ ァ イ ル が 存 在 し て い た ら 、 も う 片 方 の デ ィ レ ク ト リ に は 同 名 の 空 っ ぽ の フ ァ イ ル が あ る よ う に 動 作 す る 。
−P, −−unidirectional−new−file
デ ィ レ ク ト リ を 比 較 す る 際 、 2 番 目 の デ ィ レ ク ト リ に の み フ ァ イ ル が 存 在 し て い た ら 、 1 番 目 の デ ィ レ ク ト リ に は 同 名 の 空 っ ぽ の フ ァ イ ル が あ る よ う に 動 作 す る 。 短 縮 形 式 −P は 推 奨 さ れ な く な っ た 。
−S
FILE, −−starting−file=FILE デ ィ レ ク ト リ を 比 較 す る 際 、 FILE か ら 始 め る 。 中 断 し た 比 較 を 続 行 す る 際 に 利 用 で き る 。
−T, −−initial−tab

normal 形 式 や context 形 式 で 、 テ キ ス ト の 前 に ス ペ ー ス で な く タ ブ を 出 力 す る 。 こ う す る と 行 中 で の タ ブ に よ る 桁 揃 え が 普 通 に 見 え る 。

−U LINES, −−unified[=LINES]

unified 出 力 形 式 を 用 い 、 LINES 行 (整 数 値 ) の コ ン テ ク ス ト を 表 示 す る 。 LINES が 与 え ら れ な け れ ば 3 行 表 示 す る 。 patch が 正 し く 動 作 す る た め に は 、 少 な く と も 2 行 の コ ン テ ク ス ト が 必 要 で あ る こ と が 多 い 。

−W COLUMNS, −−width=COLUMNS

side-by-side 形 式 で 、 出 力 の 幅 を COLUMNS に す る 。

−XFILE, −−exclude−from=FILE デ ィ レ ク ト リ を 比 較 す る 際 、 フ ァ イ ル 名 の base 部 が FILE の パ タ ー ン の い ず れ か に マ ッ チ す る フ ァ イ ル や サ ブ デ ィ レ ク ト リ を 無 視 す る 。
−−binary
デ ー タ を バ イ ナ リ モ ー ド で 読 み 書 き す る (Linux や そ の 他 の POSIX ホ ス ト で は 意 味 な し )。
−−changed−group−format=
FORMAT

if-then-else 形 式 で 、 両 方 の フ ァ イ ル で 異 な る 行 グ ル ー プ の 出 力 に FORMAT を 用 い る 。

−−diff−program= PROGRAM フ ァ イ ル の 比 較 す る た め に diff と 互 換 性 の あ る 外 部 プ ロ グ ラ ム PROGRAM を 用 い る 。
−−from−file=
FILE

FILE を 各 オ ペ ラ ン ド と 比 較 す る (FILE は デ ィ レ ク ト リ で も 良 い )。 [訳 注 : 2.7 に は こ の オ プ シ ョ ン は 存 在 し な い ]

−−horizon−lines=LINES 差 分 を も っ と も コ ン パ ク ト に 出 力 す る た め に 、 違 う 部 分 の 前 後 に あ る 共 通 部 分 の そ れ ぞ れ LINES 行 を 捨 て ず に 保 存 す る 。
−−ignore−file−name−case
フ ァ イ ル を 比 較 す る 際 に フ ァ イ ル 名 の 大 文 字 小 文 字 を 無 視 す る 。 そ の た め ’’foo’’ と ’’Foo’’ は 同 じ と さ れ る の で 、 互 い に 比 較 さ れ る 。
−−inhibit−hunk−merge
隣 接 す る hunk の 境 界 を 移 動 し て hunk を マ ー ジ す る 動 作 を 行 わ な い 。
−−left−column

side-by-side 形 式 で 、 共 通 な 行 は 左 側 の 列 に し か 表 示 し な い 。

−−line−format=FORMAT

if-then-else 形 式 で 、 全 て の 入 力 行 の 出 力 に FORMAT を 用 い る 。

−−new−group−format=FORMAT

if-then-else 形 式 で 、 2 番 目 の フ ァ イ ル だ け に あ る 行 グ ル ー プ の 出 力 に FORMAT を 用 い る 。

−−new−line−format=FORMAT

if-then-else 形 式 で 、 2 番 目 の フ ァ イ ル だ け に あ る 行 の 出 力 に FORMAT を 用 い る 。

−−no−ignore−file−name−case フ ァ イ ル を 比 較 す る 際 に 、 フ ァ イ ル 名 の 大 文 字 小 文 字 を 考 慮 す る 。 そ の た め ’’foo’’ と ’’Foo’’ は 同 じ も の と さ れ な い 。 −−ignore−file−name−case を 参 照 す る こ と 。
−−old−group−format=
FORMAT

if-then-else 形 式 で 、 1 番 目 の フ ァ イ ル だ け に あ る 行 グ ル ー プ の 出 力 に FORMAT を 用 い る 。

−−old−line−format=FORMAT

if-then-else 形 式 で 、 1 番 目 の フ ァ イ ル だ け に あ る 行 の 出 力 に FORMAT を 用 い る 。

−−sdiff−merge−assist

sdiff(1) 用 に 追 加 情 報 を 表 示 す る 。 sdiffdiff を 実 行 す る と き に こ の オ プ シ ョ ン を 用 い る 。 通 常 の ユ ー ザ ー が こ の オ プ シ ョ ン を 直 接 指 定 す る 場 合 は あ ま り 想 定 さ れ て い な い 。

−−strip−trailing−cr 行 末 の CR を 取 り 除 く 。 行 末 の マ ー カ と し て CRLF を 使 う シ ス テ ム の 出 力 を 処 理 す る と き に 役 立 つ 。
−−suppress−common−lines

side-by-side 形 式 で 共 通 な 行 を 表 示 し な い 。

−−unchanged−group−format=FORMAT

if-then-else 形 式 で 、 両 方 の フ ァ イ ル に 共 通 な 行 グ ル ー プ の 出 力 に FORMAT を 用 い る 。

−−unchanged−line−format=FORMAT

if-then-else 形 式 で 、 両 方 の フ ァ イ ル に 共 通 な 行 の 出 力 に FORMAT を 用 い る 。

−−help 標 準 出 力 に 使 用 方 法 の メ ッ セ ー ジ を 出 力 し て 正 常 終 了 す る 。

−v, −−version

diff の バ ー ジ ョ ン 番 号 を 出 力 す る 。

出 力 の 形 式

context 形 式
context 出 力 形 式 は 2 行 の ヘ ッ ダ か ら は じ ま る 。 こ れ は 以 下 の よ う な も の で あ る :

*** FROMFILE FROMFILE-MODIFICATION-TIME
--- TOFILE TOFILE-MODIFICATION-TIME

−L LABEL を 用 い る と ヘ ッ ダ の 内 容 は 変 化 す る 。 次 に 来 る の は hunk (テ キ ス ト ブ ロ ッ ク ) で あ る 。 繰 り 返 し 登 場 す る こ と も あ る 。 context 形 式 の hunk は 以 下 の よ う な も の で あ る :

***************
*** FROMFILE-LINE-RANGE ****
FROMFILE-LINE
FROMFILE-LINE...
--- TOFILE-LINE-RANGE ----
TOFILE-LINE
TOFILE-LINE... 異 な っ て い る 行 の 周 辺 の コ ン テ ク ス ト の 各 行 に は 、 先 頭 に 2 つ の ス ペ ー ス が つ い て い る 。 2 つ の フ ァ イ ル 間 で 異 な っ て い る 行 に は 、 先 頭 に 表 示 文 字 と ス ペ ー ス が つ く 。

!

2 つ の フ ァ イ ル 間 で 変 更 さ れ た 部 分 の 各 行 。 も う 一 方 の フ ァ イ ル の 対 応 す る 部 分 も ’!’ で マ ー ク さ れ て 表 示 さ れ る 。

+

2 つ め の フ ァ イ ル で 「 挿 入 さ れ た 」 行 。 1 つ め の フ ァ イ ル に 対 応 部 分 は な い 。

-

1 つ め の フ ァ イ ル で 「 削 除 さ れ た 」 行 。 2 つ め の フ ァ イ ル に 対 応 部 分 は な い 。

hunk の 全 て の 変 更 が 挿 入 で あ れ ば 、 FROMFILE 各 行 は 省 略 さ れ る 。 ま た 全 て の 変 更 が 削 除 で あ れ ば 、 TOFILE 各 行 は 省 略 さ れ る 。

unified 形 式
--- FROMFILE FROMFILE-MODIFICATION-TIME
+++ TOFILE TOFILE-MODIFICATION-TIME

−L LABEL を 用 い る と ヘ ッ ダ の 内 容 は 変 化 す る 。 次 に 来 る の は hunk (テ キ ス ト ブ ロ ッ ク ) で あ る 。 繰 り 返 し 登 場 す る こ と も あ る 。 そ れ ぞ れ の hunk は フ ァ イ ル の 異 な っ て い る 1 つ 1 つ の 部 分 を 示 し て い る 。 unified 形 式 の hunk は 以 下 の よ う な も の で あ る :

@@ FROMFILE-RANGE TOFILE-RANGE @@
LINE-FROM-EITHER-FILE
LINE-FROM-EITHER-FILE... 両 者 で 共 通 な 行 の 前 に は 1 つ の ス ペ ー ス が 置 か れ る 。 異 な る 行 の 前 に は 以 下 の 表 示 文 字 が 置 か れ る :

+ こ こ で

1 つ め の フ ァ イ ル に 行 の 追 加 が 行 わ れ た 。

- こ こ で

1 つ め の フ ァ イ ル か ら 行 の 削 除 が 行 わ れ た 。

side-by-side 形 式 フ ァ イ ル は 2 列 に 表 示 さ れ 、 間 に の ど (gutter) が 置 か れ る 。 の ど に は 以 下 の マ ー カ ー の い ず れ か 1 つ が 含 ま れ る 。

[訳 注 ]: 「 の ど

(gutter)」 と は 、 印 刷 用 語 で 左 右 の ペ ー ジ の 間 に あ る 部 分 (す

な わ ち 、 折 り 目 に な る と こ ろ ) を 指 す 。

’ ’ 対 応 す る 行 が 共 通 で あ る 。 つ ま り 、 両 方 の 行 が 同 一 で あ る か 、 違 い が

−−ignore オ プ シ ョ ン の い ず れ か に よ っ て 無 視 さ れ た 。

| 対 応 す る 行 が 異 な る 。 両 方 と も 完 全 か 、 両 方 と も 不 完 全 か で あ る 。

< フ ァ イ ル は 異 な り 、

1 番 目 の フ ァ イ ル に だ け こ の 行 が 含 ま れ て い る 。

> フ ァ イ ル は 異 な り 、

2 番 目 の フ ァ イ ル に だ け こ の 行 が 含 ま れ て い る 。

(

1 番 目 の フ ァ イ ル に だ け こ の 行 が 含 ま れ て い る が 、 違 い は 無 視 さ れ る 。

)

2 番 目 の フ ァ イ ル に だ け こ の 行 が 含 ま れ て い る が 、 違 い は 無 視 さ れ る 。

\

対 応 す る 行 が 異 な る 。 1 番 目 の 行 だ け に 行 末 の 改 行 が な い 。
/
対 応 す る 行 が 異 な る 。 2 番 目 の 行 だ け に 行 末 の 改 行 が な い 。 通 常 出 力

行 は 、 そ こ に 含 ま れ る 行 の 末 尾 に 改 行 が な い 場 合 に 限 っ て 改 行 さ れ な い 。 し か し 、 出 力 行 が 2 行 の 差 異 を 表 し て い る 場 合 に は 、 片 方 だ け に 改 行 が な い 場 合 も あ り 得 る 。 こ の 場 合 出 力 行 に は 改 行 が 出 力 さ れ る が 、 の ど の マ ー ク は 1 番 目 の 行 末 に 改 行 が な け れ ば ’\’ に 、 2 番 目 の 行 末 に 改 行 が な け れ ば ’/’ に な る 。

side-by-side 形 式 が 一 番 読 み や す い よ う な 場 合 も あ る が 、 限 界 も あ る 。 こ の 形 式 は 通 常 よ り も ず っ と 広 い 幅 の 出 力 を 生 成 し 、 長 す ぎ る 行 は 折 り 畳 ん で し ま う 。 ま た こ の 出 力 で は 通 常 よ り も 文 字 の 整 列 へ の 依 存 が 大 き く な る の で 、 等 幅 フ ォ ン ト を 使 っ て い な か っ た り 、 通 常 と 異 な る タ ブ ス ト ッ プ を 使 っ て い た り 、 印 字 さ れ な い 文 字 を 使 っ て い た り す る と 、 出 力 が 非 常 に 醜 く な る 。

ed(1) 形 式
1 つ 以 上 の 差 分 hunk か ら 構 成 さ れ る 。 末 尾 に 近 い 方 の 変 更 が 先 に 現 れ 、 行 数 の 変 化 が 以 降 の ed の 行 番 号 解 釈 に 影 響 し な い よ う に な っ て い る 。 ed 形 式 の hunk は 以 下 の よ う な も の で あ る :

CHANGE-COMMAND
TO-FILE-LINE
TO-FILE-LINE...
.

ed は 入 力 の 末 尾 を 表 す た め に ピ リ オ ド 1 つ だ け の 行 を 用 い る の で 、 diff は 変 更 さ れ た 行 の う ち 、 ピ リ オ ド 1 つ だ け の 行 を ピ リ オ ド 2 つ に 変 更 し て プ ロ テ ク ト し 、 続 け て 2 つ の ピ リ オ ド を 1 つ に す る ed コ マ ン ド を 書 く 。 ed 形 式 は 改 行 さ れ て い な い 行 を 表 す こ と が で き な い 。 し た が っ て 2 番 目 の フ ァ イ ル の 最 終 行 が 変 更 さ れ て い て 、 か つ 改 行 さ れ て い な か っ た 場 合 、 diff は エ ラ ー を 報 告 し て 、 改 行 が あ る か の よ う に 動 作 す る 。 変 更 コ マ ン ド に は 3 つ の 種 類 が あ る 。 そ れ ぞ れ 、 1 番 目 の フ ァ イ ル の 行 番 号 (ま た は コ ン マ 区 切 り 指 定 の 行 範 囲 指 定 )、 続 け て 変 更 の 種 類 を 示 す 1 文 字 の 文 字 か ら な る 。 行 番 号 は 、 す べ て フ ァ イ ル の オ リ ジ ナ ル の 行 番 号 で あ る 。 変 更 コ マ ン ド の 種 類 は 以 下 の 通 り :

La

1 番 目 の フ ァ イ ル の L 行 目 以 降 に 、 2 番 目 の フ ァ イ ル か ら テ キ ス ト を 追 加 す る 。 例 え ば ’8a’ は 、 以 降 の 行 を フ ァ イ ル 1 の 8 行 目 以 降 に 追 加 す る 。

Rc

1 番 目 の フ ァ イ ル の 行 範 囲 R を 、 引 き 続 く 行 で 置 き 換 え る 。 追 加 と 削 除 の 組 み 合 わ せ で も 同 じ こ と が で き る が 、 こ ち ら の ほ う が コ ン パ ク ト で あ る 。 例 え ば ’5,7c’ は フ ァ イ ル 1 の 5 行 目 か ら 7 行 目 を フ ァ イ ル 2 か ら 読 み 込 ん だ 内 容 で 置 き 換 え る 。

Rd

1 番 目 の フ ァ イ ル の 行 範 囲 R を 削 除 す る 。 例 え ば ’5,7d’ は フ ァ イ ル 1 の 5 行 目 か ら 7 行 目 ま で を 削 除 す る 。

diffed ス ク リ プ ト の よ う な 出 力 で 、 か つ 各 hunk が forward 方 向 (先 頭 か ら 末 尾 へ ) の よ う な 出 力 も 生 成 で き る 。 コ マ ン ド の 形 式 も ち ょ っ と 変 化 し て い る 。 コ マ ン ド 文 字 が 、 修 正 す る 行 や 行 範 囲 の 先 に 来 る の で あ る 。 ま た 、 ピ リ オ ド 1 つ だ け の 行 を 特 別 扱 い す る こ と も し な い 。 ed 形 式 と 同 様 に 、 forward ed 形 式 も 改 行 し て い な い 行 を 表 す こ と は で き な い 。

forward ed 形 式 は あ ま り 便 利 で は な い 。 な ぜ な ら edpatch も こ の 形 式 の diff を 用 い る こ と が で き な い か ら で あ る 。 こ れ は 主 に 古 い バ ー ジ ョ ン の diff と の 互 換 性 の た め に 存 在 し て い る 。

RCS 形 式
RCS 出 力 形 式 は Revision Control System (RCS) で 用 い る た め に 特 別 に 設 計 さ れ た も の で あ る 。 RCS は バ ー ジ ョ ン や シ ス テ ム の 異 な る フ ァ イ ル を 扱 う た め の 、 フ リ ー な プ ロ グ ラ ム セ ッ ト で あ る 。 こ の 形 式 は forward ed 形 式 と 似 て い る が 、 ピ リ オ ド 1 つ の 行 や 改 行 し て い な い 行 の 問 題 を 回 避 し て い る の で 、 フ ァ イ ル 内 容 の 任 意 の 変 更 を 表 す こ と が で き る 。 テ キ ス ト セ ク シ ョ ン を ピ リ オ ド 1 つ の 行 で 終 わ る の で は な く 、 そ れ ぞ れ の コ マ ン ド で 、 適 用 す る 行 数 を 指 定 し て い る の で あ る 。 ま た ’c’ コ マ ン ド の 代 わ り に ’a’ と ’d’ の 組 み 合 わ せ を 用 い て い る 。 さ ら に 2 番 目 の フ ァ イ ル の 末 尾 が 変 更 さ れ て い て 、 か つ 改 行 で 終 わ っ て い な い 場 合 に は 、 出 力 の 末 尾 も 改 行 さ れ な い 状 態 で 終 わ る 。

IF−THEN−ELSE

C ソ ー ス 形 式
diff
を 用 い て 2 フ ァ イ ル の C ソ ー ス コ ー ド を マ ー ジ す る こ と も で き る 。 こ の 出 力 形 式 に は 、 両 方 の フ ァ イ ル の 行 が す べ て 含 ま れ る 。 両 方 の フ ァ イ ル に 共 通 な 行 は 一 度 し か 登 場 し な い 。 異 な る 部 分 は C プ リ プ ロ セ ッ サ の 指 定 を 用 い て 分 離 さ れ る 。 #ifdef NAME ま た は #ifndef NAME, ,BR #else ", and " #endif で あ る 。 出 力 を コ ン パ イ ル す る と き 、 マ ク ロ NAME を 定 義 し た り 、 未 定 義 の ま ま に す る こ と に よ っ て 、 ど ち ら の バ ー ジ ョ ン を 使 う か を 選 択 で き る 。 例 え ば 、 ’wait (&s)’ と い う イ ン ス タ ン ス を ’waitpid (-1, &s, 0)’ に 変 更 し 、 新 旧 の フ ァ イ ル を ’--ifdef=HAVE_WAITPID’ オ プ シ ョ ン に よ っ て マ ー ジ す る と 、 影 響 を 受 け た 部 分 の コ ー ド は 以 下 の よ う に な る だ ろ う :

do {
#ifndef HAVE_WAITPID
if ((w = wait (&s)) < 0 && errno != EINTR)
#else /* HAVE_WAITPID */
if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR)
#endif /* HAVE_WAITPID */
return w; }
while (w != child); 行 グ ル ー プ 形 式 行 グ ル ー プ 形 式 を 用 い る と 、 if-then-else 入 力 を 受 け 入 れ る 多 く の ア プ リ ケ ー シ ョ ン に 適 し た 形 式 を 指 定 で き る 。 例 え ば プ ロ グ ラ ミ ン グ 言 語 や 文 書 整 形 言 語 な ど が 挙 げ ら れ る 。 行 グ ル ー プ 形 式 は 、 似 て い る 行 か ら な る 隣 接 し た グ ル ー プ の 出 力 形 式 を 指 定 す る 。 例 え ば 、 以 下 の コ マ ン ド は TeX フ ァ イ ル ’old’ と ’new’ を 比 較 し 、 old の 部 分 を ’\begin{em}’-’\end{em}’ で 囲 み 、 new の 部 分 を ’\begin{bf}’-’\end{bf}’ で 囲 ん で マ ー ジ し た か た ち で 出 力 す る 。

diff \
--old-group-format=’\begin{em}
%<\end{em}
’ \
--new-group-format=’\begin{bf}
%>\end{bf}
’ \
old new 以 下 の コ マ ン ド も 上 記 の 例 と 同 じ だ が 、 や や 記 述 が 多 い 。 デ フ ォ ル ト の 行 グ ル ー プ 形 式 も 指 定 し て い る か ら で あ る 。

diff \
--old-group-format=’\begin{em}
%<\end{em}
’ \
--new-group-format=’\begin{bf}
%>\end{bf}
’ \
--unchanged-group-format=’%=’ \
--changed-group-format=’\begin{em}
%<\end{em}
\begin{bf}
%>\end{bf}
’ \
old new 次 に も う 少 し 進 ん だ 例 を 紹 介 す る 。 こ れ は 差 分 リ ス ト を 、
"plain English" ス タ イ ル で 行 番 号 を 書 い た ヘ ッ ダ と と も に 出 力 す る 。

diff \
--unchanged-group-format=’’ \
--old-group-format=’-------- %dn line%(n=1?:s) deleted at %df:
%<’ \
--new-group-format=’-------- %dN line%(N=1?:s) added after %de:
%>’ \
--changed-group-format=’-------- %dn line%(n=1?:s) changed at %df:
%<-------- to:
%>’ \
old new 行 グ ル ー プ 形 式 を 指 定 す る に は 、 diff を 以 下 の オ プ シ ョ ン の ど れ か 1 つ を 指 定 し て 実 行 す る 。 4 つ ま で の 行 グ ル ー プ 形 式 を 指 定 で き 、 各 指 定 が そ れ ぞ れ 行 グ ル ー プ 1 つ に 対 応 す る 。 FORMAT に は シ ェ ル の メ タ キ ャ ラ ク タ が 入 っ て い る こ と が 多 い の で 、 ク ォ ー ト す る べ き で あ ろ う 。
−−old-group−format=
FORMAT こ れ ら の 行 グ ル ー プ は 1 番 目 の フ ァ イ ル だ け に あ る 行 か ら な る hunk で あ る 。 デ フ ォ ル ト の old グ ル ー プ 形 式 は 、 changed グ ル ー プ 形 式 が 指 定 さ れ て い れ ば そ れ と 同 じ に な る 。 さ れ て い な け れ ば 行 グ ル ー プ は そ の ま ま の か た ち で 出 力 さ れ る 。
−−new-group−format=
FORMAT こ れ ら の 行 グ ル ー プ は 2 番 目 の フ ァ イ ル だ け に あ る 行 か ら な る hunk で あ る 。 デ フ ォ ル ト の new グ ル ー プ 形 式 は 、 changed グ ル ー プ 形 式 が 指 定 さ れ て い れ ば そ れ と 同 じ に な る 。 さ れ て い な け れ ば 行 グ ル ー プ は そ の ま ま の か た ち で 出 力 さ れ る 。
−−changed−group−format=
FORMAT こ れ ら の 行 グ ル ー プ は 両 方 の フ ァ イ ル の 行 か ら な る hunk で あ る 。 デ フ ォ ル ト の changed グ ル ー プ 形 式 は 、 old グ ル ー プ と new グ ル ー プ の 形 式 を 連 結 し た も の で あ る 。
−−unchanged−group−format=
FORMAT こ れ ら の 行 グ ル ー プ は 両 方 の フ ァ イ ル に 共 通 の 行 か ら な る hunk で あ る 。 デ フ ォ ル ト の unchanged グ ル ー プ 形 式 は 、 行 グ ル ー プ を そ の ま ま の か た ち で 出 力 す る も の で あ る 。 グ ル ー プ 変 換

%<

1 番 目 の フ ァ イ ル か ら の 行 を 意 味 す る 。 行 末 尾 の 改 行 も 含 む 。 各 行 は old 行 形 式 に よ っ て 整 形 さ れ る 。

%>

2 番 目 の フ ァ イ ル か ら の 行 を 意 味 す る 。 行 末 尾 の 改 行 も 含 む 。 各 行 は new 行 形 式 に よ っ て 整 形 さ れ る 。

%=

両 方 の フ ァ イ ル で 共 通 な 行 を 意 味 す る 。 行 末 尾 の 改 行 も 含 む 。 各 行 は unchanged 行 形 式 に よ っ て 整 形 さ れ る 。
%%

’%’ を 表 す 。

%c’C’’

こ こ で C は 文 字 1 文 字 で 、 C を 表 す 。 C に バ ッ ク ス ラ ッ シ ュ や ア ポ ス ト ロ フ ィ は 指 定 で き な い 。 例 え ば ’%c’:’’ は コ ロ ン を 表 し 、 こ れ は if-then-else 形 式 の then 部 分 で も コ ロ ン と し て 解 釈 さ れ る 。 通 常 は コ ロ ン は then 部 分 の 終 わ り と し て 扱 わ れ る 。

%c’\O’’ こ こ で 0 は 1 桁 か ら 3 桁 ま で の 8 進 数 字 で あ り 、 8 進 の コ ー ド 0 に 対 応 す る 文 字 を 表 す 。 例 え ば ’%c’\0’’ は ナ ル 文 字 に な る 。
(
A=B?T:E)

AB に 等 し い 場 合 は T、 等 し く な い 場 合 は EAB は そ れ ぞ れ 10 進 数 の 定 数 か 、 上 記 の よ う に 解 釈 さ れ る 文 字 1 つ で あ る 。 こ の 形 式 指 定 は A の 値 が B と 等 し け れ ば T と 等 価 で あ り 、 そ れ 以 外 の 場 合 は E と 等 価 で あ る 。 例 え ば ’%(N=0?no:%dN) line%(N=1?:s)’ は N (new フ ァ イ ル か ら の グ ル ー プ の 行 数 ) が 0 な ら ’no lines’ と な り 、 N が 1 な ら ’1 line’ と な り 、 そ れ 以 外 の 場 合 は ’%dN lines’ と な る 。

FN こ こ で

Fprintf(3) の 変 換 指 定 で 、 N は 以 下 の 文 字 の ど れ か で あ

る 。 「 F で 整 形 さ れ た N の 値 」 を 表 す 。

e

old フ ァ イ ル か ら の グ ル ー プ の 直 前 の 行 の 行 番 号 。

f

old フ ァ イ ル か ら の グ ル ー プ の 最 初 の 行 番 号 。 e + 1 に 等 し い 。

l

old フ ァ イ ル か ら の グ ル ー プ の 末 尾 の 行 番 号 。

m

old フ ァ イ ル か ら の グ ル ー プ の 直 後 の 行 の 行 番 号 。 l + 1 に 等 し い 。

n

old フ ァ イ ル か ら の グ ル ー プ の 行 数 。 l - f + 1 に 等 し い 。

E, F, L, M, N 上 記 と 同 様 の new フ ァ イ ル か ら の グ ル ー プ の も の 。

printf 変 換 指 定 に は %d, %o, %x, %X (そ れ ぞ れ 10 進 , 8 進 , 小 文 字 16 進 , 大 文 字 16 進 ) が 使 え る 。 ’%’ の 後 に は 以 下 の オ プ シ ョ ン を 順 に 指 定 で き る 。 ’-’ (左 詰 め の 指 定 )、 整 数 (フ ィ ー ル ド の 最 低 幅 )、 ピ リ オ ド と 数 値 (数 値 は 省 略 可 ; 桁 数 の 最 小 値 ) で あ る 。 例 え ば ’%5dN’ は new フ ァ イ ル か ら の グ ル ー プ の 行 数 を 、 5 文 字 幅 の フ ィ ー ル ド に 、 printf の "%5d" 書 式 を 用 い て 表 示 す る 。 行 形 式 行 形 式 は 、 入 力 か ら 取 得 さ れ た 各 行 を if-then-else 形 式 の 行 グ ル ー プ と し て 出 力 さ れ る 際 の 制 御 を 行 う 。 例 え ば 、 以 下 の コ マ ン ド は 、 テ キ ス ト の 左 に 変 更 表 示 の 1 文 字 を 表 示 し て テ キ ス ト を 出 力 す る 。 出 力 の 最 初 の 桁 は 、 削 除 行 で は ’-’、 追 加 行 で は ’|’ と な り 、 変 更 さ れ な か っ た 行 で は ス ペ ー ス と な る 。 こ の 形 式 で は 、 改 行 が 必 要 な 部 分 に は 改 行 を 入 れ て 出 力 す る 。

diff \
--old-line-format=’-%l
’ \
--new-line-format=’|%l
’ \
--unchanged-line-format=’ %l
’ \
old new 行 形 式 を 指 定 す る に は 、 以 下 の オ プ シ ョ ン の ど れ か を 用 い る 。 FORMAT に は シ ェ ル の メ タ キ ャ ラ ク タ が 入 っ て い る こ と が 多 い の で 、 ク ォ ー ト す る べ き で あ ろ う 。
−−old-line-format=
FORMAT

1 番 目 の フ ァ イ ル か ら の 行 だ け を 整 形 す る 。

−−new−line−format=FORMAT

2 番 目 の フ ァ イ ル か ら の 行 だ け を 整 形 す る 。

−−unchanged−line−format=FORMAT 両 方 の フ ァ イ ル に 共 通 の 行 を 整 形 す る 。
−−line−format=
FORMAT 全 て の 行 を 整 形 す る 。 上 記 の 全 て の オ プ シ ョ ン を 指 定 し た 場 合 に 等 し い 。 行 形 式 で は 、 普 通 の 文 字 は そ れ 自 身 を 表 す 。 変 換 指 定 は ’%’ で 始 ま り 、 以 下 の 形 式 を と る :

%l 行 の 内 容 を 意 味 す る 。 行 末 尾 の 改 行 は あ っ て も 含 ま な い 。 こ の 形 式 で は 、 行 に 改 行 が あ る か ど う か は 無 視 さ れ る 。

%L 行 の 内 容 を 意 味 す る 。 行 末 尾 の 改 行 が あ れ ば そ れ も 含 む 。 行 に 改 行 が な け れ ば 、 改 行 は な い ま ま に な る 。

%%

’%’ を 表 す 。

%c’C’’ こ こ で

C は 文 字 1 文 字 で 、 C を 表 す 。 C に バ ッ ク ス ラ ッ シ ュ や ア ポ

ス ト ロ フ ィ は 指 定 で き な い 。 例 え ば ’%c’:’’ は コ ロ ン を 表 し 、 こ れ は if-then-else 形 式 の then 部 分 で も コ ロ ン と し て 解 釈 さ れ る 。 通 常 は コ ロ ン は then 部 分 の 終 わ り と し て 扱 わ れ る 。

%c’\O’’ こ こ で 0 は 1 桁 か ら 3 桁 ま で の 8 進 数 字 で あ り 、 8 進 の コ ー ド 0 に 対 応 す る 文 字 を 表 す 。 例 え ば ’%c’\0’’ は ナ ル 文 字 に な る 。

Fn こ こ で

Fprintf(3) の 変 換 指 定 で 、 F に よ り 整 形 さ れ た 行 番 号 を

表 す 。 例 え ば ’%.5dN’ は 行 番 号 を ’%.5d’ と い う 書 式 で 整 形 し て 表 示 す る 。 printf 変 換 指 定 の 詳 細 は 、 上 記 の 行 グ ル ー プ 形 式 の サ ブ セ ク シ ョ ン を 見 よ 。 デ フ ォ ル ト の 行 形 式 は ’%l’ に 改 行 文 字 を 続 け た も の で あ る 。 入 力 に タ ブ 文 字 が あ り 、 そ れ が 出 力 行 の 桁 揃 え に 重 要 で あ る 場 合 に は 、 ’%l’ や ’%L’ の 行 指 定 を タ ブ ス ト ッ プ の 直 後 に 置 く と よ い (す な わ ち ’%l’ や ’%L’ の 前 に タ ブ 文 字 を 置 け ば よ い )。 あ る い は −t オ プ シ ョ ン を 用 い る の も よ い だ ろ う 。 行 形 式 と 行 グ ル ー プ 形 式 を 同 時 に 用 い る と 、 様 々 な 形 式 指 定 が 可 能 と な る 。 例 え ば 、 以 下 の コ マ ン ド は diff の 通 常 の 形 式 と 似 た 形 式 の 指 定 で あ る 。 こ れ を 修 正 す れ ば 、 diff の 出 力 を 微 調 整 す る こ と が 可 能 に な る 。

diff \
--old-line-format=’< %l
’ \
--new-line-format=’> %l
’ \
--old-group-format=’%df%(f=l?:,%dl)d%dE
%<’ \
--new-group-format=’%dea%dF%(F=L?:,%dL)
%>’ \
--changed-group-format=’%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
%<---
%>’ \
--unchanged-group-format=’’ \
old new

デ ィ レ ク ト リ の 比 較

diff へ の 2 つ の 引 数 が デ ィ レ ク ト リ だ っ た 場 合 、 両 方 の デ ィ レ ク ト リ に そ れ ぞ れ の フ ァ イ ル が 、 フ ァ イ ル 名 の ア ル フ ァ ベ ッ ト 順 に 比 較 さ れ る 。 通 常 は フ ァ イ ル の ペ ア に 違 い が 全 く な け れ ば 、 何 も 出 力 し な い 。 し か し −s オ プ シ ョ ン を 用 い る と 、 同 一 の フ ァ イ ル も 報 告 す る 。 両 方 の デ ィ レ ク ト リ に 同 名 の サ ブ デ ィ レ ク ト リ が あ る と 、 通 常 diff は 報 告 だ け し て サ ブ デ ィ レ ク ト リ 以 下 の フ ァ イ ル は 比 較 し な い 。 し か し −r オ プ シ ョ ン を 用 い る と 、 デ ィ レ ク ト リ ツ リ ー を 辿 れ る 限 り 、 対 応 す る 全 て の フ ァ イ ル を 比 較 す る 。 片 方 の デ ィ レ ク ト リ だ け に あ る フ ァ イ ル に 対 し て は 、 diff は 通 常 存 在 す る フ ァ イ ル の 内 容 を 表 示 せ ず 、 フ ァ イ ル が 片 方 に あ っ て 他 方 に は な い こ と だ け を 報 告 す る 。 diff の 振 舞 い を 変 え て 、 他 方 の デ ィ レ ク ト リ に も フ ァ イ ル が 空 の 状 態 で 存 在 す る か の よ う に 動 作 さ せ る こ と も で き る 。 す な わ ち diff は 実 際 に 存 在 す る フ ァ イ ル の 内 容 を す べ て 出 力 す る 。 (こ の 出 力 は 、 フ ァ イ ル が 第 1 デ ィ レ ク ト リ に あ れ ば 削 除 、 第 2 デ ィ レ ク ト リ に あ れ ば 挿 入 と な る 。 ) こ の 指 定 に は −N オ プ シ ョ ン を 使 う 。 古 い ほ う の デ ィ レ ク ト リ に 大 き な フ ァ イ ル が あ っ て 、 新 し い ほ う に は な い 場 合 、 −N オ プ シ ョ ン の 代 わ り に −P オ プ シ ョ ン を 用 い る と パ ッ チ の 大 き さ を 小 さ く で き る 。 −P オ プ シ ョ ン は −N オ プ シ ョ ン と 似 て い る が 、 第 2 デ ィ レ ク ト リ に あ る フ ァ イ ル の 内 容 だ け を 出 力 に 挿 入 し 、 第 1 デ ィ レ ク ト リ だ け に あ る フ ァ イ ル は 無 視 す る (す な わ ち 、 追 加 さ れ た フ ァ イ ル だ け を 扱 う )。 そ し て 、 パ ッ チ を 当 て る 前 に 消 去 さ れ た フ ァ イ ル を 削 除 す る よ う 、 パ ッ チ の 先 頭 に パ ッ チ を 当 て る ユ ー ザ ー へ の 指 示 を 書 く 。 デ ィ レ ク ト リ の 比 較 時 に 特 定 の フ ァ イ ル を 無 視 さ せ る に は 、 −x PATTERN オ プ シ ョ ン を 用 い る 。 シ ェ ル と は 異 な り 、 フ ァ イ ル 名 の 先 頭 の ピ リ オ ド は 、 パ タ ー ン 先 頭 の ワ イ ル ド カ ー ド に マ ッ チ す る 。 シ ェ ル に よ っ て 展 開 さ れ な い よ う 、 PATTERN は ク ォ ー ト 記 号 で 囲 う べ き で あ る 。 例 え ば ’−x ’*.[ao]’’ は ’.a’ や ’.o’ で 終 わ る 名 前 の フ ァ イ ル を す べ て 無 視 す る 。 こ の オ プ シ ョ ン は 、 複 数 指 定 す る と そ れ ぞ れ が 有 効 に な る 。 例 え ば ’−x ’RCS’ −x ’*,v’’ と い う オ プ シ ョ ン を 指 定 す る と 、 フ ァ イ ル 名 が ’RCS’ だ っ た り ’*,v’ で 終 わ る よ う な フ ァ イ ル と サ ブ デ ィ レ ク ト リ を す べ て 無 視 す る 。

返 り 値

diff は 以 下 の 値 の ど れ か で 終 了 す る :

0 全 く 変 更 が な か っ た 。

1 変 更 が あ っ た 。

2 何 ら か の エ ラ ー が 起 こ っ た 。

関 連 項 目

cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1)

注 意

プ ロ グ ラ ム の バ グ に つ い て は bug-gnu-utils [AT] gnu.org へ 報 告 し て く だ さ い 。 ペ ー ジ の 更 新 は Ragnar Hojland Espinosa <ragnar [AT] ragnar-hojland.com> が 行 っ て い ま す 。

COMMENTS