このガイドでは、Linuxを使用して2つのファイルを比較し、その違いを画面またはファイルに出力する方法を説明します。
Linuxを使用してファイルを比較するために特別なソフトウェアをインストールする必要はありませんが、端末ウィンドウを開く方法を知る必要があります 。
リンクされたガイドが示すように、Linuxを使用して端末ウィンドウを開く多くの方法があります。 一番簡単なのは、CTRL、ALT、Tキーを同時に押すことです。
比較するファイルを作成する
このガイドに従って、「file1」というファイルを作成し、次のテキストを入力します。
壁に立っている緑色のボトル10本
壁に立っている緑色のボトル10本
1つの緑色のボトルが誤って落ちる場合
壁に立っている9本の緑色のボトル
次の手順に従ってファイルを作成できます。
- 次のコマンドを入力してファイルを開きます。nano file1
- ナノエディタにテキストを入力します
- CTRLとOを押してファイルを保存します。
- CTRLとXを押してファイルを終了する
次に、 "file2"という別のファイルを作成し、次のテキストを入力します。
壁に立っている緑色のボトル10本
緑色のボトル1本が誤って落ちる場合
壁に立っている9本の緑色のボトル
次の手順に従ってファイルを作成できます。
- 次のコマンドを入力してファイルを開きます。nano file2
- ナノエディタにテキストを入力します
- CTRLとOを押してファイルを保存します。
- CTRLとXを押してファイルを終了する
Linuxを使って2つのファイルを比較する方法
2つのファイルの違いを表示するためにLinuxで使用されるコマンドは、diffコマンドと呼ばれます。
diffコマンドの最も単純な形式は次のとおりです。
差分ファイル1ファイル2
ファイルが同じであれば、このコマンドを使用すると出力されませんが、違いがあるため、次のような出力が表示されます。
2,4c2,3
壁に立っている<10本の緑色のボトル
<1匹の緑色のボトルが誤って落ちる場合
<壁に立っている9本の緑色のボトル
...
>緑色のボトル1本が誤って落ちたら
>壁には9本の緑色のボトルが立っています
最初は出力が混乱しているように見えるかもしれませんが、用語を理解すればそれはかなり論理的です。
あなた自身の目を使って、2つのファイルの違いが次のように分かります:
- 2番目のファイルは3行しか持っていませんが、最初のファイルは4つです。
- 2番目のファイルは3行目に「1緑色ボトル」と表示され、最初のファイルには「1緑色ボトル」と表示されます
- 2番目のファイルには、最終行に「あります」の代わりに「あります」と表示されます
diffコマンドの出力は、第1ファイルの第2行目と第2行目と第2ファイルの第2行目と第3行目との間に差異があることを示している。
次に、2番目のファイルに2つの異なる行が続き、最初のファイルから2から4までの行がリストされます。
ファイルが異なる場合の表示方法
ファイルが異なっているかどうかを知りたいだけで、どの行が異なっているかに関心がない場合は、次のコマンドを実行できます。
diff -q file1 file2
ファイルが異なる場合、以下が表示されます:
ファイルfile1とfile2は異なる
ファイルが同じ場合、何も表示されません。
ファイルが同じ場合にメッセージを表示する方法
コマンドを実行すると、正しく動作していることを知りたいので、ファイルが同じか異なるかにかかわらずdiffコマンドを実行するとメッセージが表示されるようにしたい
diffコマンドを使用してこの要件を達成するには、次のコマンドを使用できます。
diff -s file1 file2
ファイルが同じ場合は、次のメッセージが表示されます。
ファイルfile1とfile2は同一です
相違点を並行して生成する方法
違いが多い場合、2つのファイル間の違いが実際にどのようなものであるかについて、非常に迅速に混乱する可能性があります。
diffコマンドの出力を変更して、結果を並べて表示することができます。 これを行うには、次のコマンドを実行します。
diff -y file1ファイル2
ファイルの出力には、| 2つの行の間の違いを示すシンボル、削除された行を表示するための<と、追加された行を表示するための>です。
面白いことに、デモンストレーションファイルを使用してコマンドを実行すると、削除されたファイル2の最後の行を除いて、すべての行が異なるものとして表示されます。
列の幅を制限する
2つのファイルを並べて比較すると、ファイルにたくさんのテキストの列がある場合、読みにくいことがあります。
列の数を制限するには、次のコマンドを使用します。
diff - 幅= 5ファイルfile2
ファイルを比較する際の大文字と小文字の違いを無視する方法
2つのファイルを比較したいが、2つのファイル間で文字の大文字と小文字が同じかどうか気にしない場合は、次のコマンドを使用できます。
diff -iファイル1ファイル2
行末の空白を無視する方法
行の末尾に空白があるため、差分が読み込まれたファイルを比較するときに、次のコマンドを実行することで変更を示すように省略することができます。
差分-Zファイル1ファイル2
2つのファイル間のホワイトスペースの違いをすべて無視する方法
ファイル内のテキストのみに興味があり、スペースが他のものよりも多いかどうか気にしない場合は、次のコマンドを使用できます。
diff -w file1 file2
2つのファイルを比較するときに空白行を無視する方法
1つのファイルに空白行が追加されても構わない場合は、次のコマンドを使用してファイルを比較できます。
diff -B file1 file2
概要
詳細は、diffコマンドのマニュアルを参照してください。
男の違い
diffコマンドは、2つのファイルの違いを表示するだけの簡単な形式で使用できますが、Linuxパッチコマンドのこのガイドに示すように、パッチを使用してdiffファイルをパッチ戦略の一部として作成することもできます 。
ファイルを比較するために使用できるもう1つのコマンドは、このガイドで示されているcmpコマンドです。 これはファイルをバイトごとに比較します。