日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
DIFF(1) FreeBSD 一般コマンドマニュアル DIFF(1) 名称 diff -- ファイルとディレクトリの差分を求める比較プログラム 書式 diff [-aBbdipTtw] [-c | -e | -f | -n | -q | -u | -y] [--brief] [--changed-group-format GFMT] [--ed] [--expand-tabs] [--forward-ed] [--ignore-all-space] [--ignore-case] [--ignore-space-change] [--initial-tab] [--minimal] [--no-ignore-file-name-case] [--normal] [--rcs] [--show-c-function] [--starting-file] [--speed-large-files] [--strip-trailing-cr] [--tabsize number] [--text] [--unified] [-I pattern | --ignore-matching-lines pattern] [-L label | --label label] file1 file2 diff [-aBbdilpTtw] [-I pattern | --ignore-matching-lines pattern] [-L label | --label label] [--brief] [--changed-group-format GFMT] [--ed] [--expand-tabs] [--forward-ed] [--ignore-all-space] [--ignore-case] [--ignore-space-change] [--initial-tab] [--minimal] [--no-ignore-file-name-case] [--normal] [--paginate] [--rcs] [--show-c-function] [--speed-large-files] [--starting-file] [--strip-trailing-cr] [--tabsize number] [--text] -C number | -context number file1 file2 diff [-aBbdiltw] [-I pattern | --ignore-matching-lines pattern] [--brief] [--changed-group-format GFMT] [--ed] [--expand-tabs] [--forward-ed] [--ignore-all-space] [--ignore-case] [--ignore-space-change] [--initial-tab] [--minimal] [--no-ignore-file-name-case] [--normal] [--paginate] [--rcs] [--show-c-function] [--speed-large-files] [--starting-file] [--strip-trailing-cr] [--tabsize number] [--text] -D string | --ifdef string file1 file2 diff [-aBbdilpTtw] [-I pattern | --ignore-matching-lines pattern] [-L label | --label label] [--brief] [--changed-group-format GFMT] [--ed] [--expand-tabs] [--forward-ed] [--ignore-all-space] [--ignore-case] [--ignore-space-change] [--initial-tab] [--minimal] [--no-ignore-file-name-case] [--normal] [--paginate] [--rcs] [--show-c-function] [--speed-large-files] [--starting-file] [--strip-trailing-cr] [--tabsize number] [--text] -U number | --unified number file1 file2 diff [-aBbdilNPprsTtw] [-c | -e | -f | -n | -q | -u] [--brief] [--changed-group-format GFMT] [--context] [--ed] [--expand-tabs] [--forward-ed] [--ignore-all-space] [--ignore-case] [--ignore-space- change] [--initial-tab] [--minimal] [--new-file] [--no-ignore-file- name-case] [--normal] [--paginate] [--rcs] [--recursive] [--report- identical-files] [--show-c-function] [--speed-large-files] [--strip- trailing-cr] [--tabsize number] [--text] [--unidirectional-new-file] [--unified] [-I pattern | --ignore-matching-lines pattern] [-L label | --label label] [-S name | --starting-file name] [-X file | --exclude-from file] [-x pattern | --exclude pattern] dir1 dir2 diff [-aBbditwW] [--expand-tabs] [--ignore-all-blanks] [--ignore-blank- lines] [--ignore-case] [--minimal] [--no-ignore-file-name-case] [--strip-trailing-cr] [--suppress-common-lines] [--tabsize number] [--text] [--width] -y | --side-by-side file1 file2 解説 diff ユーティリティは、file1 と file2 の内容を比較し、1 つのファイルを他 に変換するために必要な変更のリストを標準出力に書き込みます。ファイルが同 一であるなら、出力は、生成されません。 出力オプション (相互に排他的です) は、次の通りです: -C number --context number -c に似ていますが、コンテキストの number 行で diff を生成します。 -c コンテキストの 3 行で diff を生成します。-c を付けて、出力形式 は、わずかに修正されます: 出力は、関連するファイルの識別で始ま り、それらの作成日付と、次に各変更が 15 個の * がある行によって区 切られます。file1 から削除された行は、`- ' でマークされます。 file2 に追加されたそれらは、マークされた `+ ' です。1 つのファイ ルから他に変更される行は、`! ' をつけて両方のファイルにマークされ ます。互いに 3 行以内の状態にある変化は、出力でグループ化されま す。 -D string --ifdef string 定義する string が file2 を生じる間に、string の定義なしの結果の コンパイルが、file1 をコンパイルすることと等しくできるように、含 まれる C プリプロセッサの制御で、標準出力に file1 と file2 のマー ジされたバージョンを作成します。 -e --ed 次に、file1 を file2 に変換するために使用することができる、エディ タユーティリティ ed(1) のための入力として適切な形式で出力を生成し ます。 特別なコマンドは、結果が、dir1 のそれらの状態から dir2 のそれらの 状態に 2 つのディレクトリに共通のテキストファイルを変換するための sh(1) スクリプトにできるように、-e でディレクトリを比較するとき、 出力に追加されます。 -f --forward-ed -e フラグのものと同一の出力ですが、逆の順序です。それは、ed(1) に よって要約することができません。 -n -e のものと同様のスクリプトを生成しますが、各挿入または削除コマン ドの変更されたカウントで逆の順序です。これは、rcsdiff によって使 用される形式です。 -q --brief ファイルが異なるとき、ただ 1 行を印刷 (表示) します。変更のリスト を出力しません。 -U number --unified number -u に似ていますが、コンテキストの number 行で diff を生成します。 -u コンテキストの 3 の行で、unified diff を生成します。unified diff は、-c オプションによって生成されたコンテキスト diff と同様です。 しかしながら、-c と違って、(追加される、および削除される) 変更さ れたすべての行は、単一のセクションに存在します。 -y --side-by-side それらの間のマーカで 2 つのカラムで出力します。マーカは、次の 1 つを指定することができます: 空白 対応している行は、同一です。 '|' 対応している行は、異なっています。 '<' ファイルは、異なり、最初のファイルだけが行を含んで います。 '>' ファイルは、異なり、2 番目のファイルだけが行を含ん でいます。 比較オプションは、次の通りです: -a --text すべてのファイルを ASCII テキストとして扱います。通常、diff は、 ファイルがバイナリの文字を含んでいるなら、単に ``Binary files ... differ'' と印刷 (表示) します。このオプションの使用によって、diff は、強制的に diff を生成します。 -B --ignore-blank-lines 空行だけを含むチャンクを無視します。 -b --ignore-space-change 後続する空白 (空白とタブ) は、無視され、他の空白の文字列は、等し いと比較されます。 -d --minimal できる限り小さな diff を生成するように一生懸命試みます。これは、 多くの変更がある大きなファイルを処理するとき、たくさんの処理能力 とメモリを消費します。 -I pattern --ignore-matching-lines pattern 拡張された正規表現 pattern に一致する行の変更、挿入と削除を無視し ます。複数の -I パターンを指定できます。変更のすべての行は、無視 される変更に対していくつかのパターンと一致しなければなりません。 正規表現のパターンの詳細については、re_format(7) を参照してくださ い。 -i --ignore-case 文字の大文字小文字を無視します。例えば、``A'' は、``a'' と等しい と比較します。 -l --paginate ページ付けするために、pr(1) に出力を渡します。 -L label --label label コンテキストまたは unified diff ヘッダでファイル名と時間の代わり に、最初の (このオプションが 2 度指定されるなら、2 番目の) label を印刷 (表示) します。 -p --show-c-function unified と context diff で、文字、下線、またはドル記号で始まるコ ンテキストの前の最後の行の各変更の最初の 40 文字を表示します。標 準のレイアウトの慣習にしたがっている C ソースコードについて、これ は、変更を適用する関数のプロトタイプを表示します。 -T --initial-tab 通常、コンテキストまたは unified 出力形式のための行の残りの前に空 白ではなくタブを印刷 (表示) します。これは、一貫している行のタブ の整列を行います。 -t --expand-tabs 出力行のタブを拡張します。通常または -c 出力は、オリジナルのソー ス行のインデンテーション (段付け) を台無しにし、出力リストを解釈 しづらくする、各行の前に (複数の) 文字を追加します。このオプショ ンは、オリジナルのソースのインデンテーション (段付け) を保存しま す。 -w --ignore-all-blanks -b --ignore-space-change に似ていますが、空白類 (空白とタブ) は、 完全に無視されます。例えば、``if ( a == b )'' であるなら、 ``if(a==b)'' と等しいと比較します。 -W number --width number 並んでいる形式を使用するとき、ほとんどの number (数値) カラムを出 力します。デフォルト値は、130 です。 --changed-group-format GFMT 提供される入力グループの形式。 形式は、特別なキーワードがある文字列です: %< FILE1 からの行 %< FILE2 からの行 --ignore-file-name-case ファイル名を比較するとき、大文字小文字の区別を無視します。 --no-ignore-file-name-case ファイル名を比較するとき、大文字小文字の区別を無視しません (デ フォルト)。 --normal デフォルトの diff 出力。 --speed-large-files GNU diff との互換性のための stub オプション。 --strip-trailing-cr 入力ファイルのキャリッジリターンを切り取ります。 --suppress-common-lines 並んでいる形式を使用するとき、共通の行を出力しません。 --tabsize number タブを表している空白の数 (デフォルト 8)。 ディレクトリ比較オプションは、次の通りです: -N --new-file ファイルがただ 1 つのディレクトリに見つけられるなら、あたかも他の ディレクトリでも見つけられたが、0 のサイズであったかのように動作 します。 -P --unidirectional-new-file ファイルが dir2 でのみ見つけられるなら、あたかも dir1 でも見つけ られたが 0 のサイズであったかのように、動作します。 -r --recursive diff のアプリケーションは、共通のサブディレクトリに再帰的に遭遇し ます。 -S name --starting-file name ファイル name で始まる、中間のディレクトリ diff を再開始します。 -s --report-identical-files diff は、そうでなければ言及されない、同じファイルを報告します。 -X file --exclude-from file basename が file の行と一致しているファイルとサブディレクトリを比 較から除外します。複数の -X オプションが指定できます。 -x pattern --exclude pattern basename が pattern と一致しているファイルとサブディレクトリを比 較から除外します。パターンは、fnmatch(3) を通してシェルスタイルの グロブ (ファイル名置換) を使用して照合されます。複数の -x オプ ションが指定できます。 両方の引数がディレクトリであるなら、diff は、名前によってディレクトリの内 容をソートし、次に、異なっているテキストファイルで、変更リストを生成し て、通常のファイルの diff アルゴリズムを実行します。異なるバイナリファイ ル、共通のサブディレクトリとただ 1 つのディレクトリに現れるファイルは、そ のようなものとして記述されます。ディレクトリモードで、通常のファイルと ディレクトリだけが比較されます。デバイス特殊ファイルまたは FIFO のような 通常でないファイルに遭遇するなら、診断のメッセージが印刷 (表示) されま す。 file1 と file2 の 1 つだけがディレクトリであるなら、diff は、ディレクトリ でないファイルの最後の構成要素と同じファイル名でディレクトリファイルに含 まれているディレクトリでないファイルに適用されます。 file1 または file2 のいずれかが `-' であるなら、標準入力が、その代わりに 使用されます。 出力スタイル (-e, -c または -n --rcs オプションをのぞいて) デフォルトの出力は、これら の形式の行を含んでいます、ここで、XX, YY, ZZ, QQ は、ファイル順序の個別の 行番号です。 XXaYY file1 の行 XX (の終わり) で、それらを等しくするために、file2 の行 YY の内容を追加します。 XXaYY,ZZ 上記と同じようですが、file2 の YY から ZZ の行の範囲を file1 の行 XX に追加します。 XXdYY 行 XX で、行を削除します。値 YY は、行の変更が file2 で行の file1 をもたらすことを伝えます。 XX,YYdZZ file1 の XX から YY までの行の範囲を削除します。 XXcYY file1 の行 XX を file2 の行 YY に変更します。 XX,YYcZZ 指定された行の範囲を行 ZZ と置き換えます。 XX,YYcZZ,QQ file1 の範囲 XX,YY を file2 の範囲 ZZ,QQ に置き換えます。 これらの行は、file1 を file2 に変換する ed(1) のサブコマンドに似ていま す。アクション文字の前の行番号は、file1 に関連します。それらの後は、file2 に関連します。したがって、a を d に交換することによって、逆の順序で行を読 み込み、どのように file2 を file1 に変換するを決定することもできます。 ed(1) などで、同一のペア (ここで、num1 = num2) は、単一の数として短縮され ます。 関連ファイル /tmp/diff.XXXXXXXX デバイスまたは標準入力を比較するとき、使用する一時 ファイル。一時ファイルは、それが作成されるとすぐにア ンリンクされるので、ディレクトリのリストに、それが現 れないことに注意してください。 終了ステータス diff ユーティリティは、次の値の 1 つで終了します: 0 違いが見つけられませんでした。 1 違いが見つけられました。 >1 エラーが起こりました。 使用例 old_dir と new_dir を比較し、unified diff を再帰的に生成し、新しいファイ ルとしてそれらの 1 つでのみ見つかるファイルを処理します: $ diff -ruN /path/to/old_dir /path/to/new_dir 表現 ``*.h'' と ``*.c'' と一致しているファイルを除いて上記と同じです: $ diff -ruN -x '*.h' -x '*.c' /path/to/old_dir /path/to/new_dir ファイルが異なるかどうかを示して、単一の行を表示します: $ diff -q /boot/loader.conf /boot/defaults/loader.conf Files /boot/loader.conf and /boot/defaults/loader.conf differ 次の内容で example.txt と名前が付けられたファイルを仮定します: FreeBSD is an operating system Linux is a kernel OpenBSD is an operating system "Linux" または "Open" のいずれかを含んで、それらの行を比較することを除い て、 stdin (標準入力) と example.txt を比較します: $ echo "FreeBSD is an operating system" | diff -q -I 'Linux|Open' example.txt - 関連項目 cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1) James W. Hunt and M. Douglas McIlroy, "An Algorithm for Differential File Comparison", Computing Science Technical Report, Bell Laboratories 41, June 1976. 規格 diff ユーティリティは、IEEE Std 1003.1-2008 (``POSIX.1'') 仕様に準拠して います。 フラグ [-aDdIiLlNnPpqSsTtwXxy] は、その仕様への拡張です。 歴史 diff コマンドは、Version 6 AT&T UNIX で登場しました。 FreeBSD 13.0 June 19, 2020 FreeBSD 13.0