コンピュータユーザは,二つのファイルの差がどれくらいあるのか尋ねることが 多いことを知っています.おそらく一つのファイルは,もう一つのファイルのよ り新しいバージョンでしょう.もしかすると,二つのファイルは最初は同一のも のだったのですが,別々の人が変更したものかもしれません.
二つのファイルや,二つのディレクトリでそれぞれ対応するファイルの差を表示 するために,@command{diff}コマンドを使用することが可能です. @command{diff}は,行単位でのファイル間の差を,コマンドラインで選択可能な いくつかの書式で出力します.この差の組は差分(diff)やパッチ (patch)と呼ばれることもよくあります.同一ファイルに対して,通常 @command{diff}は何も出力しません.バイナリ(テキストでない)ファイルに対し て,通常@command{diff}はそれらが異なっていることだけを報告します.
二つのファイルの差がある場所のオフセットと行番号を表示するために, @command{cmp}コマンドを使用することが可能です.@command{cmp}では,二つの ファイル間で異なっている全ての文字を並べて表示することも可能です.二つの ファイルを文字単位で比較するもう一つの方法としては,Emacsコマンドの M-x compare-windowsがあります.そのコマンドの詳細は,See section `Other Window' in The GNU Emacs Manual.
三つのファイル間の差を表示するために@command{diff3}コマンドを使用するこ とが可能です.二人の人が共通のオリジナルに個別の変更を行なったとき, @command{diff3}でオリジナルと二つの変更されたバージョンの差を報告させる ことが可能で,衝突しているという警告を用いながら,両者の変更をそれぞれ含 めているマージされたファイルを生成することが可能です.
二つのファイルを対話的にマージするために@command{sdiff}コマンドを使用す ることが可能です.
(プログラムのソースコードのような)テキストファイルへの更新を他の人に配布 するために,@command{diff}で生成された差分の組を使用することが可能です. 比較したファイルの差が小さいとき,この手法は特に役に立ちます. @command{diff}出力を与えることで,更新するための@command{patch}プログラ ムを使用したり,ファイルのコピーをpatchにしたりすることが可能です. @command{diff}とは差分を生成するために一つのファイルからもう一つのファイ ルを引くことだと考える場合,@command{patch}とは,もう一つのものを再生成 するために差分を一つのファイルに加えることだと考えることが可能です.
このマニュアルの最初では差分の作成に集中し,その後でファイルを更新するた めに差分を使用する方法を提示します.
GNU @command{diff}は,Paul Eggert,Mike Haertel,David Hayes, Richard Stallman,そしてLen Towerによって書かれました.Wayne Davisonは, 一体化した出力書式を設計し実装しました.基本的なアルゴリズムは,"An O(ND) Difference Algorithm and its Variations", Eugene W. Myers, Algorithmica Vol. 1 No. 2, 1986, pp. 251--266と,"A File Comparison Program", Webb Miller and Eugene W. Myers, Software--Practice and Experience Vol. 15 No. 11, 1985, pp. 1025--1040に記述されています. アルゴリズムは,"Algorithms for Approximate String Matching", E. Ukkonen, Information and Control Vol. 64, 1985, pp. 100--118に記述されているものに依存しないようにして発明されました.
GNU @command{diff3}はRandy Smithによって書かれました.GNU @command{sdiff}はThomas Lordによって書かれました.GNU @command{cmp} はTorbjorn GranlundとDavid MacKenzieによって書かれました.
@command{patch}はLarry WallとPaul Eggertによって書かれました.いくつかの GNUの拡張部分はWayne DavisonとDavid MacKenzieが寄贈してくれました. このマニュアルの一部は,Larry Wallによって書かれたマニュアルページを適用 していて,それには彼の許可が付随しています.
Go to the first, previous, next, last section, table of contents.