Linux, コマンド · 1 min read · Sep 17, 2025

初心者のためのLinux cmpコマンドチュートリアル(7つの例)

cmpコマンドは、Linuxオペレーティングシステムで2つのファイルをバイト単位で比較するために使用されます。これは、2つのファイル間の違いの簡潔な出力を提供し、ユーザーがそれらの間の不一致を簡単に特定できるようにします。cmpコマンドは、どのオフセットで非一致バイトが発生したかを表示し、不一致の概要カウントを提供します。この便利なツールを使用することで、ユーザーは2つのファイルが同一であるかどうかを迅速に確認できます。

このチュートリアルでは、わかりやすい例を通じて’cmp’について説明します。しかし、その前に、このチュートリアルで言及されているすべての例と指示は、Ubuntu 22.04でテストされていることを述べておく価値があります。

cmpコマンド

‘cmp’コマンドは、2つのファイルのバイト単位の比較を実行することを可能にします。このユーティリティは、コマンドラインオプションの形でいくつかの機能を提供します。このチュートリアルでは、ツールの動作を理解するための良いアイデアを与えるいくつかの重要なオプションについて説明します。

1. cmpを使用して2つのファイルを比較する方法

最も単純な形では、次のように’cmp’を使用できます:

cmp [file1-name] [file2-name]

すでに述べたように、このツールは2つのファイルをバイト単位で比較します。違いが見つかると、ツールは停止し、どの行とバイトに違いがあるかを示す出力を生成します。

例えば:

cmp file1.txt file2.txt

Linuxでcmpコマンドを使用して2つのファイルを比較する

上のスクリーンショットに示されているように、出力はファイルが行1のバイト20で異なることを明確に示しています。

2. cmpに異なるバイトを表示させる方法

必要に応じて、’cmp’に出力に異なるバイトを表示させることもできます。これは、 -b コマンドラインオプションを使用して行うことができます。

cmp -b [file1] [file2]

例えば:

cmp -b file1.txt  file2.txt

cmpに異なるバイトを表示させる方法

この場合、上のスクリーンショットに示されているように、違いは17バイト目にあり、file1.txtでは’l’、file2.txtでは’i’です。値154と151は、それぞれこれらのバイトの値です。

3. cmpに両方のファイルからいくつかの初期バイトをスキップさせる方法

必要に応じて、’cmp’に両方のファイルから特定の数の初期バイトをスキップさせてから比較させることもできます。これは、 -i コマンドラインオプションに引数としてバイト数を指定することで行うことができます。

cmp -i [スキップするバイト数] [file1] [file2]

例えば:

cmp -i 10 file1.txt  file2.txt

このような場合(-iを使用してバイトをスキップする場合)、比較が始まるバイトはバイト番号ゼロとして扱われることに注意してください。

次に、ツールは両方のファイルから異なる数のバイトをスキップすることも許可します。これは次のように行うことができます:

cmp -i [最初のファイルからスキップするバイト数] : [2番目のファイルからスキップするバイト数] [file1] [file2]

例えば:

cmp -i 4:7 file1.txt file2.txt

cmpに両方のファイルからいくつかの初期バイトをスキップさせる方法

4. cmpにすべての異なるバイトのバイト位置(および値)を表示させる方法

‘cmp’コマンドにすべての異なるバイトのバイト位置とバイト値を印刷させることもできます。この機能は、 -l コマンドラインオプションを使用してアクセスできます。

cmp -l [file1] [file2]

例えば:

cmp -l file1.txt  file2.txt

cmpにすべての異なるバイトのバイト位置(および値)を表示させる方法

出力の最初の列(上記の例に示されている)は、異なるバイトの位置(バイト番号)を表します。2番目の列は、最初のファイルの異なるバイトのバイト値を表し、3番目の列は、2番目のファイルの異なるバイトのバイト値を表します。

5. 比較するバイト数を制限する方法

このツールは、比較したいバイト数を制限することも許可します。たとえば、最大25または50バイトを比較したい場合です。これは、 -n コマンドラインオプションを使用して行うことができます。

$ cmp -n [比較するバイト数]  [file1] [file2]

例えば:

$ cmp -n 25  file1.txt  file2.txt

6. cmpコマンドを使用している間に進行状況メーターを表示する方法

‘cmp’を使用して大きなファイル(またはパーティション)を比較する際、進行中の比較の進行状況を確認したい場合があります。これは、’pv’コマンドと一緒に’cmp’コマンドを使用することで行うことができます。以下は、使用できるコマンドテンプレートです:

$ pv [file1] | cmp -l [file2] > [output-file]

例えば:

$ pv file1.txt | cmp -l file3.txt > output.txt

出力ファイル’output.txt’には、’cmp’コマンドが生成するすべての出力が含まれます。進行状況メーター(上のスクリーンショットに表示されているもの)は、’pv’コマンドによって生成されます。

‘pv’コマンドは通常、Linuxにプリインストールされていません(少なくともUbuntuにはありません)。しかし、次のコマンドを使用して簡単にインストールできます:

sudo apt-get install pv

7. ‘cmp’に出力を抑制させる方法

このツールは、通常生成する出力を抑制することも許可します。これは、 -s コマンドラインオプションを使用して行うことができます。

$ cmp -s [file1] [file2]

例えば:

$ cmp -s file1.txt file2.txt

このオプションは、スクリプトで’cmp’ユーティリティを使用する際に便利です。たとえば、ファイルが同一であるかどうか(コマンドの終了コードにアクセスすることで判断できる)に応じて、ツールが通常生成する出力の代わりにカスタムメッセージを表示したい場合があります。

結論

この記事では、’cmp’コマンドのほとんどのオプションについて説明しましたので、これらを練習して日常の作業でツールを使用し始める必要があります。疑問や質問がある場合は、’cmp’のマニュアルページを参照してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。