Linuxではファイルの差分を確認するときに便利な「diff」コマンドがあります。
ここでは「diff」コマンドについて以下の内容で解説していきます。
この記事では「diff」コマンドについてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!
diffコマンドとは
「diff」コマンドはファイルを比較して、差分を確認したい場合に使用します。
プログラムを記述したソースファイルに変更があった場合など、どこに変更を加えたか元ファイルと比較して差分を確認したい場合に使用することが多く、Linuxで開発に携わるエンジニアなら使用する頻度は高いコマンドと言えるでしょう。
・「diff」コマンドの書式
$ diff 比較対象ファイル1 比較対象ファイル2
diffコマンドの使い方
ここではdiffコマンドの使い方をパターン別に見ていきましょう。
ファイルの差分を出力する
testディレクトリにあるsample01.txtとsample02.txtを比較してみます。
まずは以下のコマンドを実行してファイルを作成しておきます。
$ echo -e "aaa\nbbb\nccc\nddd\neee" > sample01.txt
$ echo -e "aaa\nbbb\nfff\nddd\neee" > sample02.txt
ファイルを作成したら、diffコマンドで比較してみます。
$ diff sample01.txt sample02.txt
実行結果:
sample01.txtとsample02.txtの差分が表示されました。
「3c3」と表示されているのは、ファイル1の3行目がファイル2の3行目の内容に変更されていることを意味します。
では複数行にまたがって変更されている場合はどのように出力されるのでしょうか?
まずは以下のコマンドでsample03.txtを作成しておきます。
$ echo -e "aaa\nbbb\nfff\nddd\nggg" > sample03.txt
作成したsample03.txtをsample01.txtと比較してみます。
$ diff sample01.txt sample03.txt
実行結果:
複数行変更がある場合は「3c3」「5c5」のように1つずつ差分が表示されることがわかりますね!
差分をテキストに出力
実際にソースファイルの内容を比較する場合、修正箇所が多いと差分の内容を確認するのも大変です。
そこでdiffで取得した差異内容をリダイレクトでテキストに出力しておくと便利です。
先ほど紹介したコマンドの内容をdiff.txtという名前でリダイレクトしてみます。
$ diff sample01.txt sample03.txt > diff.txt
$ view diff.txt
作成されたdiff.txtを確認すると、内容が表示されていることがわかります。
diffコマンドのオプション
diffコマンドでは以下のオプションがよく使用されます。
オプション | 説明 |
---|---|
-c | ファイルの内容を出力して違いのある箇所を「!」で表す |
-s | 差異が無い場合は同一であるを出力する |
-q | ファイルが異なるかどうかのみチェックする |
-cで差分をわかりやすく表示
比較するファイルの内容をそれぞれ出力して変更点を視覚的に分かりやすく表示するには「-c」オプションを使用します。
「-c」を使用すると、変更箇所は「!」で表示されます。
$ diff -c sample01.txt sample03.txt
実行結果:
このようにファイルの内容と変更箇所が「!」で表示されるので、どの箇所が変更されたかひと目でわかりますね!
-qでファイル内容が異なるかチェックする
ファイルの差分を表示させずに、内容が異なるかどうかのみをチェックしたい場合は「-q」オプションを使用します。
$ diff -q sample01.txt sample03.txt
実行結果:
ファイルの内容が異なる場合は、
「ファイル sample01.txt と sample03.txt は異なります」
のように出力されます。
Linuxについてもっと知りたい方へ
そもそもLinuxについて、
「実はなんとなくしか理解していない…」
「Linuxを効率よく学習する方法が知りたい」
といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!
まとめ
ここでは、Linuxでファイルの差異を確認する「diff」コマンドについて、
- diffコマンドとは
- diffコマンドの使い方
- diffコマンドのオプションと使い方
について解説しました。
ソースファイルに修正を加えた場合など、正しく変更されているか「diff」コマンドで差異を確認する機会はよくありますので、使い方はよく理解しておきましょう。
もし、diffの使い方を忘れてしまったら、この記事を参考にしてくださいね。