本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (A~M) > d

diff(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

diff ― ファイルとディレクトリの差分プログラム

構文

diff [-C n] [-S name] [-lrs] [-bcefhintw] dir1 dir2

diff [-C n] [-S name] [-bcefhintw] file1 file2

diff [-D string] [-biw] file1 file2

説明

ディレクトリの比較

両方の引き数がディレクトリの場合、 diff は、まずディレクトリの内容を名前別にソートした後、 同じ名前で内容の異なるファイルを対象として 通常の diff アルゴリズム (下記参照) を実行します。 内容の異なるバイナリファイル、およびディレクトリにある共通のサブディレクトリとファイルがリストされます。 ディレクトリを比較するときは、次のオプションが使用できます。

-l  

長い出力フォーマット。各テキストファイルの diff は、 pr によって改ページが行われます ( pr(1) 参照)。 その他の差分は、テキストファイルの差分の後に、記憶および要約されます。

-r  

共通したサブディレクトリが検出されるごとに、 diff を反復的に適用します。

-s  

diff は、同一のファイルで、明示されていないものを報告します。

-S name 

ソート済みのディレクトリの中でディレクトリを対象に name ファイルから diff を開始します。

ファイルの比較

diff を使用して通常のファイルを対象に実行した場合、またはディレクトリの比較中で内容の異なるテキストファイルを比較した場合は、 2 つのファイルを一致させる上で変更する必要のある行が指摘されます。 diff は通常、必要最小限の差分を報告します。ただし、わずかな文字などの違いを含む行が混乱の原因になる場合もあります。 file1 と、 file2 がいずれもディレクトリでない場合は、 どちらも - として指定することはできないので、 標準入力を使用します。 file1 がディレクトリの場合で、このディレクトリにあるファイルのうち、 file2 のファイル名と同じものが使用されます (逆の場合もあります)。

出力フォーマットには、いくつかのオプションを使用できます。デフォルトの場合、次のようなフォーマットで出力されます。

n1 n3,n4
n1,n2 n3
n1,n2 n3,n4

以上の行は、 file1file2 に変換する ed コマンドの出力に似ています。 英字の後に続く数字は、 file2 に適用されるものです。 実際に ad を入れ換えて、逆方向から読んでみると、 file2file1 でどのように変換されるかを確認することができます。 ed の場合と同じように、 n1=n2 または n3=n4 のペアが 1 桁の数字として略記されます。

各行の後に、最初のファイルで変化のある行が < のフラグで示され、次に 2 つ目のファイルで変化のある行が > のフラグで示されます。

-b, -w, -i, または -t の場合を除き、次の各オプションは排他的に使用します ( -b, -w, -i, または -t は任意に組み合わせることができます)。

-e  

file2 から file1 を作成する場合に使用する ed エディタに a, c, および d コマンドのスクリプトを生成します。 ディレクトリを -e に比較すると、出力には別のコマンドが追加されるので、 2 つのディレクトリに共通するテキストファイルを dir1 から dir2 に変換するためのシェルスクリプトが生成されます。

-f  

-e オプションに似たスクリプトを生成します。可読性が改善されますが、 ed と併用することはできません。

-n  

-e に似たスクリプトを逆の順序で生成します。挿入コマンド、または削除コマンドがあるごとに、変更された行がカウントされます。この形式は、 rcsdiff ( rcsdiff(1) 参照) で使用されます。

-c  

3 行のコンテキストとともに差分リストを生成します。 -c では、出力フォーマットが多少変わります。すなわち対象となったファイル名が示され、それぞれの作成日の後に、変更箇所を約 12 個のアスタリスク (*) で区切った行が続きます。 file1 で削除された行には、 - のマークが、また file2 に追加された行には + のマークが付けられます。 一方のファイルで変化している行は、両方のファイルで ! のマークが付けられます。 ファイル中で 3 行以内の差分は、出力上ではグループにまとめられます。

-C n 

-c に似たフォーマットで出力します。ただし、 n 行分のコンテキストを示します。

-h  

高速で簡略な処理を行います。 このオプションは、変更の範囲が短く、該当箇所が離れている場合に利用できます。この場合、使用するファイルの長さに制限はありません。

-D string 

file1file2 をマージした結果を標準出力に送ります。 この場合、C プリプロセッサコントロールも含まれるので、 string を定義せずにこの結果をコンパイルしても、 file1 をコンパイルし、 string を定義して file2 をコンパイルした場合と同じ結果が得られます。

-b  

後続のブランク (スペース、およびタブ) を無視し、その他のブランク文字列を同じものとみなします。

-w  

空白文字 (ブランク、およびタブ) を無視します。 例えば if ( a == b )if(a==b) は等価として扱われます。

-i  

大文字/小文字の違いを無視します。 したがって、 Aa は同じ文字とみなされます。

-t  

出力行でタブを展開します。 通常の出力、または -c の出力で各行の先頭に 1 桁以上の文字を追加します。 オリジナルのソース行で字下げの位置が合っていないと、 出力リストが読みにくくなります。 このオプションでは、ソースファイルの字下げが保持されます。

多言語化対応

環境変数

LANG により、 LC_ALL と対応する環境変数 ( LC_ で始まる変数) でロケールが指定されていない場合に、 ロケールカテゴリに適用するロケールが決定されます。 LANG がセットされていない場合、または空白の文字列にセットされている場合は、 デフォルトの"C" ( lang(5) 参照) が使用されます。

LC_CTYPE により、 diff コマンドで使用するスペース文字を指定します。また ファイル中のテキストをシングルバイト、またはマルチバイトの どちらで解釈するかも定義されます。

LC_MESSAGES により、表示するメッセージで使用する言語を指定します。

多言語化対応変数が正しく設定されていないと、 diff および diffh は、この変数が "C" に設定されている場合と同じように動作します。 environ(5) を参照してください。

サポートされる国際的コードセット

diff および diffh は、マルチバイトの代替スペース文字を認識しない点を除き、 シングルバイト、およびマルチバイトのキャラクタセットがサポートされます。

戻り値

diff が完了すると、次のいずれかの終了値を返します。

 0  

差分はありません。

 1  

差分が検出されました。

>1  

エラーが検出されました。

次のコマンドでは、 script スクリプトファイルを作成します。

diff -e x1 x2 >script 

スクリプトの終わりに w を追加して、ファイルを保存します。

echo w >> script 

次の方法により、 ed エディタを使用して x1 ファイルから x2 ファイルを作成します。

ed x1 < script 

次のコマンドでは、差分の検出された行の前後に 2 行のコンテキスト情報 を付加した差分出力が生成されます。

diff -C2 x1 x2 

次のコマンドでは、ブランク、タブ、および大文字/小文字の違いをすべて 無視します。

diff -wi x1 x2 

警告

-e または -f のオプションで生成された編集スクリプトは、 シングルドット (.) で構成した行を作成する場合だけに適用されます。

-b, -w, または -I のオプションを指定して ディレクトリを比較すると、 diff はまず、 cmp と同じ形式でファイルの比較を行い、 各ファイルが異なる場合に、 diff アルゴリズムを実行します。 これにより、ブランク文字列や大文字/小文字の違いなどの わずかな差分の場合を除き、それぞれのファイルが同一である場合に、 出力の生成に多少時間を要することがあります。

デフォルトのアルゴリズムでは、 ファイルのサイズの約 6 倍に相当するメモリ割り当てが必要になります。 大型のファイルを比較する場合に、十分なメモリが確保できないときは、 -h オプション、または bdiff を使用することができます ( bdiff(1) を参照)。

-r オプションを指定してディレクトリを比較すると、 diff はサブツリーを再帰的にサブディレクトリを下のレベルを移動します。 複数のレベルのディレクトリを比較するときは、 システムで利用可能な容量以上のメモリが必要になる場合があります。 必要となるメモリ容量は、再帰レベルの深さと ファイルのサイズによって異なります。

著者

diff は、 AT&T、カリフォルニア大学バークレー校、および HP で 開発されました。

ファイル

/usr/lbin/diffh  

-h

オプションで使用します。

参照

bdiff(1), cmp(1), comm(1), diff3(1), diffmk(1), dircmp(1), ed(1), more(1), nroff(1), rcsdiff(1), sccsdiff(1), sdiff(1), terminfo(4)

標準準拠

diff: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.