はじめに
Linuxのdiff
コマンドは、2つのファイルを1行ずつ比較し、それらの違いを表示するために使用されます。このコマンドラインユーティリティには、ファイルを同一にするために適用する必要のある変更が一覧表示されます。
diff
の詳細については、以下をお読みください コマンドとそのオプションとわかりやすい例。
diff構文
diff
を使用するための構文 コマンドは次のとおりです:
diff [option] file1 file2
出力構文
diff
を使用する場合 、以下で構成される出力を解釈する方法を知ることが重要です。
-
<
で始まる出力 最初のファイルのコンテンツを参照します。 -
>
で始まる出力 2番目のファイルのコンテンツを参照します。 - 最初のファイルに対応する行番号。
- 特別なシンボル。特別な記号は、最初のファイルを2番目のファイルと一致させるために編集する必要がある方法を示します。出力には次のように表示される場合があります:
-
a
(追加) -
c
(変更) -
d
(削除)
-
- 2番目のファイルに対応する行番号。
差分の例
diff
がどのように異なるかを示すため コマンドが機能するので、2つのサンプルファイルを作成し、それらのコンテンツを比較しました。
2つのサンプルファイルを作成する
1.まず、ターミナルを使用して、 example1.txtという名前のLinuxファイルを作成します。 。 Nanoテキストエディタを使用していますが、任意のテキストエディタを使用できます。
sudo nano example1.txt
2.テキストエディタでファイルを作成して開いたら、次の行を追加します。
Apple
Orange
Banana
Watermelon
Chery
3.ファイルを保存して終了します– Ctrlを押したままにします + X Yを押して確認します 。
4.次に、 example2.txtを作成します 実行してファイル:
sudo nano example2.txt
5.次のコンテンツをファイルに追加します。
Orange
Peach
Apple
Banana
Melon
Cherry
6.変更を保存して終了します。
ファイルをdiffコマンドと比較します
1. 2つのサンプルファイルを配置したら、 diff
を使用します それらがどのように異なり、どのように同一にするかを確認するコマンド:
diff example1.txt example2.txt
出力には、最初のファイルを変更して example2.txtと同じ内容にする方法の説明が一覧表示されます。 。サンプルファイルの出力を見て、命令をデコードしてみましょう。
-
1d0
–最初の行(1
)最初のファイルから削除する必要があります(d
)。そうでない場合は、0
の行に表示されます。 2番目のファイルにあります。 -
1d0
で参照) 。 -
2a2,3
–行2
最初のファイルの(a
)を追加する必要があります )行2
および3
(2,3
)2番目のファイルから。 >ピーチ
、> Apple
–追加する必要のあるコンテンツ(2a2,3
で参照) 。-
4c5
– 4行目(4
)最初のファイルから変更する必要があります(c
)5行目(5
)2番目のファイルから。 <スイカコード>
–変更する必要のあるコンテンツ。>メロン
–変更する必要があるもの。
差分オプション
追加オプションなしで、 diff
デフォルト形式で出力を表示します。この出力を変更して、ユースケースをより理解しやすく、または適用できるようにする方法があります。 diff
の詳細については、以下をお読みください コマンドオプション。
-cオプション
コンテキスト形式はdiff
異なる行の周りにコンテキストの複数の行を出力するコマンドラインユーティリティオプション。
ファイル間の違いをコンテキスト形式で表示するには、次のコマンドを使用します。
diff -c file1 file2
下の画像のコンテキストフォームのサンプルファイルの出力を見てください。
最初のファイルに関する情報を表示する行は、 ***
で始まります 、2番目のファイルを示す行は ---
で始まります 。
最初の2行には、両方のファイルの名前とタイムスタンプが表示されます。
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
****************
-セパレータとしてのみ使用されます。
各ファイルの行を一覧表示する前に、出力はファイルの行範囲から始まります。
*** 1,5 ****
--- 1,6 ----
残りの行には、ファイルの内容がリストされています。各行の先頭は、 example1.txtを変更する方法を示しています。 example2.txtと同じにします 。行が次で始まる場合:
-
(マイナス)–最初のファイルから削除する必要があります。
+
(プラス)–最初のファイルに追加する必要があります。
!コード>
(感嘆符)–2番目のファイルから対応する行に変更する必要があります。
記号がない場合、線は同じままです。
したがって、上記の例では、 Apple
を削除する必要があります 最初の行から、スイカ
を置き換えます メロン
4行目に、 Peach
を追加します およびApple
2行目と3行目に。
-uオプション
統一フォーマットは、冗長なコンテキスト行なしで出力を表示するために追加できるオプションです。これを行うには、次のコマンドを使用します:
diff -u file1 file2
それでは、統一された形式のサンプルファイルの出力を調べてみましょう。
最初のファイルに関する情報を表示する行は、 ---
で始まります 、2番目のファイルを示す行は +++
で始まります 。
最初の2行には、両方のファイルの名前とタイムスタンプが表示されます。
*** example1.txt 2021-12-27 10:53:30.700640904 +0100
--- example2.txt 2021-12-27 10:54:41.304939358 +0100
@@ -1,5 +1,6 @@
-両方のファイルの行範囲を示します。
以下の行は、ファイルの内容と example1.txtを変更する方法を示しています。 example2.txtと同じにする 。行が次で始まる場合:
-
(マイナス)–最初のファイルから削除する必要があります。
+
(プラス)–最初のファイルに追加する必要があります。
記号がない場合、線は同じままです。
上記の例では、出力は Apple
およびスイカ
Peach
に対して、削除する必要があります 、アップル
、およびメロン
追加する必要があります。
-iオプション
デフォルトでは、 diff
大文字と小文字が区別されます。大文字と小文字を区別しないようにする場合は、 -i
を追加します コマンドのオプション:
diff -i file1 file2
たとえば、次の行を含む1つのファイルを作成するとします。
Apple
Orange
Banana
Watermelon
Cherry
そして、内容を含む別のファイル:
Apple
orange
Banana
watermelon
Cherry
追加オプションのない出力は、ファイル間に違いがあることを示し、それらを変更する方法を示します。
ただし、 -i
を追加した場合 オプションの場合、コマンドは違いを検出しないため、出力はありません。
-バージョンオプション
diff
のバージョンを確認するには システムで実行している場合は、次のコマンドを実行します:
diff --version
-ヘルプオプション
diff
の概要を出力するには 使用実行:
diff --help
その他の差分オプション
相違する
その他のオプション サポートには次のものが含まれます:
-a /-テキストコード> | ファイルをテキストとして表示し、行ごとに比較します。 |
-b / -ignore-space-change | ファイルを比較するときに空白を無視します。 |
-B / -ignore-blank-lines | ファイルを比較するときに空白行を無視します。 |
-バイナリ | バイナリモードでデータを比較して書き込みます。 |
-d -最小限 | アルゴリズムを変更します(たとえば、より小さな変更セットを見つけるため)。 |
-e / --ed | 出力を有効なed にします スクリプト。 |
-E / -ignore-tab-expansion | ファイルを比較するときにタブ拡張子を無視します。 |
-l </ code> / --paginate | pr を介して出力を実行します それをページ付けします。 |
-N /-新しいファイルコード> | 欠落しているファイルは存在するが空であるとして扱います。 |
-q /-簡単な | 詳細を指定せずにファイルが異なるかどうかを出力します。 |
-s / -report-identical-files | ファイルが同一の場合に出力します。 |
-w / -ignore-all-space | ファイルを比較するときに空白を無視します。 |