このページの内容

13.1 diff のオプション

GNU diff が受け付けるすべてのオプションを以下にまとめます。ほとんどのオプションには同等の名前が2つあり、一方は「-」を前置した1文字、他方は「--」を前置した長い名前です。引数を取らない1文字のオプションは、複数をコマンドラインの1語にまとめられます。-ac は -a -c と同等です。長い名前のオプションは、一意に識別できる任意の接頭部分まで省略できます。角括弧([ と ])は省略可能な引数を表します。

-a
--text

テキストに見えないファイルも含め、すべてのファイルをテキストとして扱い、行単位で比較します。バイナリファイルとテキスト比較の強制を参照してください。

-b
--ignore-space-change

空白の量の変化を無視します。空白とタブの間隔による相違を抑えるを参照してください。

-B
--ignore-blank-lines

空行の挿入・削除だけの変更を無視します。すべて空行である相違を抑えるを参照してください。

--binary

バイナリモードでデータを読み書きします。バイナリファイルとテキスト比較の強制を参照してください。

-c

コンテキスト出力形式を使い、3行のコンテキストを表示します。コンテキスト形式を参照してください。

--color [=when]

ヘッダー、追加行、削除行などの異なるコンテキストを区別するために、色を使うか指定します。when は省略するか、次のいずれかにします。

  • none 色をまったく使いません。–color オプションを指定しない場合のデフォルトです。
  • auto 標準出力が端末の場合だけ色を使います。
  • always 常に色を使います。

--color を指定して when を省略すると、--color=auto と同等になります。

-C lines
--context[=lines]

コンテキスト出力形式を使い、lines(整数)行のコンテキストを表示します。lines を省略した場合は3行です。コンテキスト形式を参照してください。patch が正常に動作するには、通常少なくとも2行のコンテキストが必要です。

互換性のため、diff は旧式のオプション構文 -lines もサポートします。これは -c、-p、または -u と組み合わせると有効になります。新しいスクリプトでは、代わりに -U lines(-C lines)を使ってください。

--changed-group-format=format

format を使い、両ファイルの異なる行を含む行グループを if-then-else 形式で出力します。行グループ形式を参照してください。

-d
--minimal

アルゴリズムを変更し、より小さな変更集合を見つけられる可能性があります。その分 diff は遅くなり、場合によっては大幅に遅くなります。diff の性能のトレードオフを参照してください。

-D name
--ifdef=name

プリプロセッサーマクロ name を条件とする、マージ済みの「#ifdef」形式の出力を作ります。if-then-else によるファイルのマージを参照してください。

-e
--ed

有効な ed スクリプトとなる出力を作ります。ed スクリプトを参照してください。

-E
--ignore-tab-expansion

タブ展開による変化を無視します。空白とタブの間隔による相違を抑えるを参照してください。

-f
--forward-ed

ed スクリプトに多少似た出力を作りますが、変更はファイル内で現れる順に並びます。順方向の ed スクリプトを参照してください。

-F regexp
--show-function-line=regexp

コンテキスト形式と unified 形式で、各相違ハンクの前にある、regexp に最後に一致した行の一部を表示します。正規表現に一致する行を表示するを参照してください。

--from-file=file

file を各オペランドと比較します。file はディレクトリでもかまいません。

--help

使用方法の概要を出力して終了します。

--horizon-lines=lines

共通する先頭部分の末尾 lines 行と、共通する末尾部分の先頭 lines 行を捨てません。diff の性能のトレードオフを参照してください。

-i
--ignore-case

大文字・小文字の変化を無視し、両者を同等とみなします。大文字・小文字の相違を抑えるを参照してください。

-I regexp
--ignore-matching-lines=regexp

regexp に一致する行の挿入・削除だけの変更を無視します。すべての行が正規表現に一致する相違を抑えるを参照してください。

--ignore-file-name-case

ファイル名の比較で大文字・小文字を無視します。たとえば d と e の再帰的比較では、d/Init と e/inIt の内容を比較することがあります。トップレベルでは「diff d inIt」が d/Init と inIt の内容を比較することがあります。ディレクトリを比較するを参照してください。

-l
--paginate

出力を pr に渡してページに分割します。diff 出力のページ分割を参照してください。

-L label
--label=label

コンテキスト形式(コンテキスト形式参照)と unified 形式(unified 形式参照)のヘッダーで、ファイル名の代わりに label を使います。RCS スクリプトを参照してください。

--left-column

横並び形式で、共通する2行の左側の列だけを表示します。横並び形式の制御を参照してください。

--line-format=format

format を使い、すべての入力行を if-then-else 形式で出力します。行形式を参照してください。

-n
--rcs

RCS 形式の diff を出力します。-f と似ていますが、各コマンドで対象行数を指定します。RCS スクリプトを参照してください。

-N
--new-file

一方のファイルが存在しない場合は、存在するが空であると扱います。ディレクトリを比較するを参照してください。

--new-group-format=format

format を使い、第2ファイルだけから取った行グループを if-then-else 形式で出力します。行グループ形式を参照してください。

--new-line-format=format

format を使い、第2ファイルだけから取った1行を if-then-else 形式で出力します。行形式を参照してください。

--no-dereference

シンボリックリンクの参照先ではなく、リンク自体を処理します。2つのリンクが等しいとみなされるのは、参照先の名前が厳密に同じ場合だけです。

--old-group-format=format

format を使い、第1ファイルだけから取った行グループを if-then-else 形式で出力します。行グループ形式を参照してください。

--old-line-format=format

format を使い、第1ファイルだけから取った1行を if-then-else 形式で出力します。行形式を参照してください。

-p
--show-c-function

各変更がどの C 関数内にあるかを示します。C 関数の見出しを表示するを参照してください。

--palette=palette

色付き出力が有効なときの配色を指定します。デフォルトは「rs=0:hd=1:ad=32:de=31:ln=36」で、削除行は赤、追加行は緑、行番号はシアン、ヘッダーは太字になります。

サポートされる機能は次のとおりです。

ad=32

追加行の SGR 部分文字列。デフォルトは緑の前景色です。

de=31

削除行の SGR 部分文字列。デフォルトは赤の前景色です。

hd=1

ハンクヘッダーの SGR 部分文字列。デフォルトは太字の前景表示です。

ln=36

行番号の SGR 部分文字列。デフォルトはシアンの前景色です。

-q
--brief

相違の詳細を示さず、ファイルが異なるかどうかだけを報告します。異なるファイルの概要を示すを参照してください。

-r
--recursive

ディレクトリを比較するとき、見つかったサブディレクトリを再帰的に比較します。ディレクトリを比較するを参照してください。

-s
--report-identical-files

2つのファイルが同じ場合に報告します。ディレクトリを比較するを参照してください。

-S file
--starting-file=file

ディレクトリを比較するとき、ファイル file から開始します。中断した比較を再開するために使います。ディレクトリを比較するを参照してください。

--speed-large-files

ヒューリスティックを使って、多数の小さな変更が散在する大きなファイルの処理を速めます。diff の性能のトレードオフを参照してください。

--strip-trailing-cr

入力行の末尾にあるキャリッジリターンを除去します。バイナリファイルとテキスト比較の強制を参照してください。

--suppress-common-lines

横並び形式で共通行を表示しません。横並び形式の制御を参照してください。

-t
--expand-tabs

入力ファイル内のタブによる整列を維持するため、出力でタブを空白へ展開します。タブ位置の整列を維持するを参照してください。

-T
--initial-tab

通常形式とコンテキスト形式で、行のテキストの前に空白の代わりにタブを出力します。これによって行内のタブによる整列が通常どおりに見えます。タブ位置の整列を維持するを参照してください。

--tabsize=columns

タブ位置が表示上 columns 列ごと(デフォルト8)に設定されていると仮定します。タブ位置の整列を維持するを参照してください。

--suppress-blank-empty

通常形式、コンテキスト形式、unified 形式で空行を表現するとき、改行前の空白を出力しません。末尾の空白を省くを参照してください。

--to-file=file

各オペランドを file と比較します。file はディレクトリでもかまいません。

-u

unified 出力形式を使い、3行のコンテキストを表示します。unified 形式を参照してください。

--unchanged-group-format=format

format を使い、両ファイルに共通する行グループを if-then-else 形式で出力します。行グループ形式を参照してください。

--unchanged-line-format=format

format を使い、両ファイルに共通する1行を if-then-else 形式で出力します。行形式を参照してください。

--unidirectional-new-file

第1ファイルが存在しない場合は、存在するが空であると扱います。ディレクトリを比較するを参照してください。

-U lines
--unified[=lines]

unified 出力形式を使い、lines(整数)行のコンテキストを表示します。lines を省略した場合は3行です。unified 形式を参照してください。patch が正常に動作するには、通常少なくとも2行のコンテキストが必要です。

古いシステムでは、diff は -u と組み合わせると有効になる旧式のオプション -lines をサポートします。POSIX 1003.1-2001(規格への適合参照)はこれを認めていないため、代わりに -U lines を使ってください。

-v
--version

バージョン情報を出力して終了します。

-w
--ignore-all-space

行を比較するとき空白を無視します。空白とタブの間隔による相違を抑えるを参照してください。

-W columns
--width=columns

横並び形式で、1行あたり最大 columns 列(デフォルト130)の表示を出力します。横並び形式の制御を参照してください。

-x pattern
--exclude=pattern

ディレクトリを比較するとき、基本名が pattern に一致するファイルとサブディレクトリを無視します。ディレクトリを比較するを参照してください。

-X file
--exclude-from=file

ディレクトリを比較するとき、file に含まれるいずれかのパターンに基本名が一致するファイルとサブディレクトリを無視します。ディレクトリを比較するを参照してください。

-y
--side-by-side

横並び出力形式を使います。横並び形式の制御を参照してください。

-Z
--ignore-trailing-space

行末の空白を無視します。空白とタブの間隔による相違を抑えるを参照してください。