概要
cmpはdiffコマンドよりもはるかにシンプルな比較ツールです。diffがファイルの差分を行単位で詳細に表示するのに対し、cmpは単に「2つのファイルが異なる」という事実と、差分が発生する最初の位置(バイトオフセット)と行番号のみを出力します。したがって、設定ファイルやバイナリファイルのように内容全体を見る必要がなく、一致するかどうかだけを確認したい場合に非常に効果的です。
主な特徴
cmpコマンドの主な特徴は以下の通りです。
- バイト単位でファイルを比較します。
- 差分が発生する最初の位置と行番号のみを出力します。
- 出力がシンプルなので、スクリプトでファイルの一致を確認する用途に適しています。
- バイナリファイルの比較に特に有用です。
diffとの違い
cmpとdiffはどちらもファイル比較ツールですが、目的と出力方法が異なります。
- cmp: バイト単位比較、最初の差分のみ報告、バイナリファイルの比較に適しています。
- diff: 行単位比較、全ての差分を詳細に報告、テキストファイルの比較に適しています。
主要オプション
よく使うcmpコマンドのオプションを用途別にグループ化しました。
1) 比較オプション
2) ヘルプ
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`cmp` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
cmpコマンドの様々な使用例を通じて機能を習得しましょう。
2つのテキストファイルを比較
echo 'Hello World' > file1.txt
echo 'Hello World' > file2.txt
cmp file1.txt file2.txt
同じテキストファイル2つを比較すると、何も出力されません。
異なる2つのテキストファイルを比較
echo 'Hello World' > file1.txt
echo 'Hello, World' > file2.txt
cmp file1.txt file2.txt
ファイルの内容が異なる場合、最初の差分のバイト位置と行番号を出力します。
バイナリファイルを比較
cmp /bin/ls /bin/cmp
バイナリファイルの一致を簡単に確認します。出力がなければ同じファイルです。
スクリプトでの使用
cmp -s file1.txt file2.txt && echo 'ファイルが同一です。' || echo 'ファイルが異なります。'
cmpの終了コードを使用して、ファイルの一致に応じて分岐処理を行います。
終了コード
cmpは終了コードを通じて比較結果を知らせるため、スクリプトで活用するのに適しています。
コード | 意味 |
---|---|
0 | 2つのファイルが同一 |
1 | 2つのファイルが異なる |
2 | アクセス不可能なファイルまたはオプションエラー |
インストール
cmpは、ほとんどのLinuxディストリビューションに`diffutils`パッケージの一部としてデフォルトで含まれています。別途インストールする必要はありません。
ヒント&注意事項
cmpコマンドを使用する際の注意点をまとめました。
ヒント
- cmpはバイナリファイルの比較に最適化されています。テキストファイルの内容差分を確認するには`diff`を使用することをお勧めします。
- `cmp -s`オプションを使用すると出力がないため、スクリプトで`if`文や`&&`/`||`演算子と組み合わせて使用するのに便利です。
- バイト位置は1から始まり、`cmp -l`で出力されるバイト値は8進数表記です。