[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

diff【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point2つのファイルの中身の違いを表示するよ

スポンサーリンク

簡単に書くよ

diff【コマンド】とは

2つのファイルの中身の違いを確認するときに使うコマンド
です。

image piyo

詳しく書くよ

UNIX系(LinuxとかMacとか)で使えます。

書き方は

diff [オプション] [ファイル名1] [ファイル名2]

です。
オプションは地味にいっぱいあります。

オプション説明
-a指定されたファイルテキストファイル以外の場合も中身をテキストと見なして比較を行う
-b空白の数の違いを無視する
-B空行の有り無しの違いを無視する
-ccontext出力形式とやらで出力する。比較結果の見せ方の指定?
-C【数字】「-c」オプションと同じだけど、内容が違う行の前後【数字】行を出力する
-dアルゴリズムを変更してちょっとした違いも拾えるようにするらしい。これを使うとdiffは遅くなるそうな
-D【名前】if-then-else形式で出力して、プリプロセッサのマクロ?の条件?に【名前】を使うらしい。英語で書くと「Make merged if-then-else format output, conditional on the preprocessor macro name.」ですってさ。よく分からん
-eedのスクリプト形式で出力するらしい。よく分からん
-fedのスクリプトとパッと見同じような感じで出力するらしい。こんなオプション使うの?
-F【パターン】context形式とunified形式において、それぞれの差分ブロックに対して【パターン】マッチしたほげほげ。英語で書くと「In context and unified format, for each hunk of differences, show some of the last preceding line that matches regexp.」ですってさ。ようするによく分からん
-hうん、UNIXとの互換性のためにあるけど使わないでね。なオプション
-Hちょっとした違いがたくさんある大きなファイルをチョッパヤで扱うためにheuristicsな方法を取るらしい。要するに、よく分からん
-iアルファベットの大文字・小文字の違いを無視する
-I【パターン】ファイルの中身における【パターン】の有り無しの違いを無視する
-lprを通してページ付けを行うらしい
-L【ラベル】ontext形式かunified形式の場合、ヘッダにはファイル名ではなく【ラベル】を表示する
-nRCS形式のdiffを出力するらしい。よく分からん
-Nディレクトリ比較の場合、片方のディレクトリにしかないファイルについては、もう一方のディレクトリには空ファイルがあるつもりで比較する。要するにディレクトリ「a/」と「b/」を比較していて「a/a.txt」があった場合、「b/」にはa.txtが無い場合でも「b/a.txt(中身は空)」があるつもりで比較するよってこと
-p「Show which C function each change is in.」らしい。よく分からん
-Pディレクトリ比較の場合、2番目のディレクトリにしかないファイルについては、もう一方のディレクトリには空ファイルがあるつもりで比較する。1番目のディレクトリにだけあるファイルは無視するのが「-N」との違いですかね
-qファイルが同じか違うかだけを表示する。詳細は表示しない
-rディレクトリが指定された場合はサブディレクトリの中も比較する
-s2つのファイルが同じだった場合は「同じだよー!」と表示する
-S【ファイル名】ディレクトリ比較の場合、【ファイル名】から始める。中断したときの再開用ですってさ
-tタブをスペースに変換して出力する
-Tnormal形式かcontext形式の場合、テキスト前のスペースはタブに変換して出力する。これをやると行中でのタブによる位置揃えがいー感じに見えるのだそうな
-uunified出力形式とやらで出力する。比較結果の見せ方の指定?
-U【数字】-u」オプションと同じだけど、内容が違う行の前後【数字】行を出力する
-vバージョン情報を表示する
-W【数字】side by side出力形式とやらで出力する際、幅を【数字】で出力するらしい
-x 【パターン】ディレクトリを比較する際、【パターン】と一致するファイルやディレクトリは比較対象から外す
-X【ファイル名の一部】ディレクトリを比較する際、ファイル名のベース部が【ファイル名の一部】に一致するファイルやディレクトリを比較対象から外す。要は比較対象にしたくないファイルを指定するオプションっぽい
-yside by side出力形式とやらで出力する。比較結果の見せ方の指定?比較した2つのファイルを横並びで表示するっぽい

などですね。

「diff」コマンドコマンドライン上から2つのファイルを比較したい際に使います。

ぶっちゃけ、書いてて涙目になるくらいオプションが多いのですが、使う機会はそこまで多くはありません。
オプション未指定で

diff 【ファイル名1】 【ファイル名2】

としてもそれなりに便利なコマンドです。
ちょっと凝った比較がしたくなったら徐々にオプションも覚えていく感じで良いかと思います。

あと余談ですが「diff」は(多分)「differencedifferent)」の略ですよ。

image piyo2

一言でまとめるよ

まぁ「diff」ってコマンドが出てきたら「2つのファイルの中身の違いを抽出するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク