cmpコマンドについて
cmpコマンドは、
UNIXおよび
UNIX系の
オペレーティングシステムで利用できるコマンドラインユーティリティです。主に二つのファイルを比較し、その結果を標準出力に表示するために用いられます。ファイルの同一性を確認したり、差異を検出したりする際に非常に便利なツールです。
基本的な使い方
cmpコマンドは、指定された二つのファイルを比較します。デフォルトでは、ファイルが完全に同一である場合は何も出力しません。ファイルに差異がある場合は、最初に差異が見つかった箇所のバイト位置と行番号を報告します。
オプション
cmpコマンドは、さまざまなオプションをサポートしており、比較の動作を細かく制御できます。以下に主なオプションを説明します。
`-b, --print-bytes`:
差異のあるバイトの内容を表示します。どのバイトが異なっているのかを具体的に知りたい場合に便利です。
`-i SKIP, --ignore-initial=SKIP`:
ファイルの先頭から指定したバイト数(SKIP)を無視して比較を開始します。例えば、ヘッダー部分を無視して比較したい場合に役立ちます。
`-i SKIP1:SKIP2, --ignore-initial=SKIP1:SKIP2`:
一つ目のファイルの先頭SKIP1バイトと、二つ目のファイルの先頭SKIP2バイトをそれぞれ無視して比較します。ファイルごとに異なるスキップ量を指定できます。
`-l, --verbose`:
差異のあるすべてのバイトの位置と値を詳細に出力します。多数の差異がある場合に、全てを確認するのに便利です。
`-n LIMIT, --bytes=LIMIT`:
最大でLIMITバイトまでを比較します。ファイルの全体ではなく、特定の範囲のみを比較したい場合に利用します。
`-s, quiet, silent`:
結果を標準出力に何も出力しません。終了コードのみで結果を確認したい場合に利用します。このオプションは、スクリプトなどでcmpコマンドの結果を判定する際に便利です。
`-v, --version`:
cmpコマンドのバージョン情報を表示します。
`--help`:
cmpコマンドのヘルプ情報を表示します。コマンドの使い方やオプションの詳細を確認する際に便利です。
終了コード
cmpコマンドは、比較結果に応じて異なる終了コードを返します。これらの終了コードは、スクリプトなどで結果を判定するために利用できます。
`0`:
二つのファイルが完全に同一である場合。
`1`:
二つのファイルが異なる場合。
`2`:
引数にアクセスできない場合や、引数が不足している場合。
関連コマンド
cmpコマンドは、ファイルの比較を行うための基本的なツールですが、他にも関連するコマンドが存在します。
`diff`:
ファイル間の差異をより詳細に表示するためのコマンドです。行単位での差異を検出したり、パッチファイルを生成したりできます。
`diff3`:
3つのファイル間の差異を検出するためのコマンドです。
参照情報
Single Unix Specificationで定義されるcmpの仕様(英語)
cmp(1) - Linux JM Project
cmp(1) - OpenBSD(英語)
cmp(1) - HMUGリファレンスマニュアル(英語)
cmp(1) - Debianリファレンスマニュアル(日本語)
cmp - diffutilsパッケージに含まれているGNU cmpのマニュアル(英語)
まとめ
cmpコマンドは、ファイルの同一性確認や差異検出を行うための強力なツールです。オプションを組み合わせることで、さまざまな比較ニーズに対応できます。ファイルの内容を比較する際には、cmpコマンドを積極的に活用しましょう。