Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ diffh(1) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cmp(1)

cc(1)

comm(1)

ed(1)

diff3(1)

DIFF(1)  —  NEWS-OS Programmer’s Manual

名称

diff − ファイルおよびディレクトリの比較プログラム

形式

diff [ −l ] [ −r ] [ −s ] [ −cefhn ] [ −biwt ] [ −Sname ] dir1 dir2
diff [ −cefhn ] [ −biwt ] file1 file2
diff [ −Dstring ] [ −biw ] file1 file2

解説

引数がディレクトリである場合には、 diff は名前でディレクトリの内容をソートしたのちに、テキストファイルに対して、 通常のファイルの比較アルゴリズム(後述)を実行します。 相違のあるバイナリファイル、共通のサブディレクトリ、 および片方のディレクトリだけにあるファイルがリスト表示されます。 ディレクトリの比較に使用できるオプションは次のとおりです。

−l ロングフォーマットで出力します。各テキストファイルの相違は、ページ付けるために pr(1) を介してパイプされ、他の相違は記憶されてテキストファイルの相違がすべて 報告されてから、その要約が表示されます。

−r 共通のサブディレクトリに対して diff が再帰的に適用されます。

−s 相違のないファイル (全く同じ) も diff に報告させます。

−Sname
ディレクトリの比較を先頭からではなく、 指定された name のファイルから開始します。

通常のファイルに対して実行するとき、 またはディレクトリの比較で相違のあったテキストファイルを比較するときには、 diff は、2 つのファイルが一致するためには、 ファイル内のどの行を変更しなければならないかを報告します。 ごく希な状況にある場合を除いては、 diff によって検出されるファイルの相違箇所は、 (変更のために) 必要にして十分な、最小限のものとなっています。 file1 と file2 のいずれもディレクトリでなければ、いずれかに − を指定することができ、 その場合には、標準入力が使用されます。 file1 がディレクトリである場合には、そのディレクトリ内で file2 と同じファイル名を持つファイルが使用されます(逆の場合も同様)。

出力形式を指定するためのオプションがいくつかありますが、デフォルトは、 次のような形式の出力になります。

n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4

これらの行は、 file1 を file2 に変換する ed コマンドに似ています。文字のあとにある数字は、 file2 の行数です。実際に、 a を d と交換し、逆方向に読んでみることによって、 file2 を file1 に変換する方法も同様に確かめることができます。 ed の場合と同様に、 n1 = n2 または n3 = n4 である同じペアは、単一の数字として短縮表現されます。

これらの各行のあとには、 < で示される第 1 のファイル内で影響されるすべての行、 次いで > で示される第 2 のファイル内で影響されるすべての行がきます。

以下のオプションは、他のオプションと共に使用できる −b、 −w、 −i、 −t オプション以外はすべて相互排他的になっています。

−e エディタ ed のために、 a、 c、 d コマンドのスクリプトを作成して、 ed が file1 から file2 を再作成できるようにします。 −e と共に、次のシェルプログラムは、 ファイルの複数のバージョンを維持するのに役立ちます。 先祖ファイル ($1) と diff によって作られた一連のバージョン間 ed スクリプト ($2, $3, ...) だけが必要とされます。 「最新のバージョン」が標準出力に表示されます。

(shift; cat $∗; echo ´1,$p´) │ ed − $1

−e を用いてディレクトリを比較すると、特別なコマンドが出力に追加されます。 したがって、結果として得られるものは、2 つのディレクトリに共通した テキストファイルを dir1 における状態から dir2 における状態に変換する sh(1) スクリプトです。

−f −e のスクリプトと同じようなスクリプトを作りますが、 ed では使用することはできず、順序が逆になっています。

−n −e のスクリプトと同じようなスクリプトを作りますが、順序が逆であり、 各挿入または削除コマンドについて、変更された行のカウントが出力されます。 これは、 rcsdiff(1) によって使用される形式です。

−c デフォルトは 3 行の分脈の表示ですが、例えば −c10 とすることによって 10 行に変更することができます。 −c を使用した場合には、出力フォーマットは少し違ってきます。 この出力は、対象となったファイルの識別名と作成日付で始まり、 そのあとに各変更が 12 個の ∗ がある行によって分離されて表示されます。 file1 から削除された行は ‘− ’ でマークされ、 file2 へ追加された行は ‘+ ’ でマークされます。 片方のファイルからもう一方のファイルへ変更された行は、 両方のファイルで ‘! ’ を用いてマークされます。
 
互いの <context> 行内にある変更は、出力時にグループ化されます。 (これは、以前の diff −c と変わりましたが、結果として得られる出力は、 普通、もっと理解しやすくなっています)。

−h 高速ですが綿密ではない仕事をします。変更の長さが短く、 明確に分離されているときにだけ使用されますが、 どんなに長いファイルでも扱うことができます。

−Dstring
diff に file1 と file2 のマージされたバージョンを標準出力に作成させます。この場合、 string を定義しない結果のコンパイルが file1 のコンパイルになるように C プリプロセッサの制御が含められます。 string を定義した場合は file2 になります。

−b 後続ブランク  (スペースとタブ) を無視されるようにします。 その他の空の文字列は同様に比較します。

−w −b に似ていますが、後続ブランクだけではなく、 ブランクとタブをすべて無視させます。 例えば、 if ( a == b ) は if(a==b) として比較されます。

−i 大文字と小文字の区別を無視します。例えば、 A は a と同様に扱われます。

−t 出力行でタブを展開します。 通常の出力または −c の出力は、各行の前にキャラクタを追加して、 オリジナルのソース行のインデントをなくし、 出力リストを読みにくくします。 このオプションは、 オリジナルのソースのインデントを保存します。

関連ファイル

/tmp/d?????一時ファイル
/usr/lib/diffh−h 用
/bin/diffディレクトリの比較用
/bin/pr−l 用

関連事項

cmp(1), cc(1), comm(1), ed(1), diff3(1)

診断

終了ステータスは相違がない場合には 0、相違がある場合には 1、 トラブルが発生した場合には 2 です。

バグ

−e または −f オプションで作られた編集スクリプトは、 単一の .  から成る行の作成については配慮されていません。

−b、 −w、 −i オプションを指定してディレクトリの比較を行う場合には、 diff は、まず cmp の流儀でファイルを比較し、それらが等しくないとわかると、 diff アルゴリズムを実行します。 このため、ファイルの相違が、 (−b、−w、−i オプションで) 無視すべき ブランク文字列または大文字と小文字の違いだけしかないため、 結局等しいと判明する場合に、 小量の余分な出力が生じてしまうことがあります。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026