【Linuxコマンド】diffでファイルの差分を出力する方法

Linuxではファイルの差分を確認するときに便利な「diff」コマンドがあります。

ここでは「diff」コマンドについて以下の内容で解説していきます。

diff_image

この記事では「diff」コマンドについてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!

diffコマンドとは

shutterstock_142466296

「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

実行結果:
diff_image01

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

実行結果:
diff_image02

複数行変更がある場合は「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

実行結果:
diff_image03

このようにファイルの内容と変更箇所が「!」で表示されるので、どの箇所が変更されたかひと目でわかりますね!

-qでファイル内容が異なるかチェックする

ファイルの差分を表示させずに、内容が異なるかどうかのみをチェックしたい場合は「-q」オプションを使用します。

$ diff -q sample01.txt sample03.txt

実行結果:
diff_image04

ファイルの内容が異なる場合は、

「ファイル sample01.txt と sample03.txt は異なります」

のように出力されます。

Linuxについてもっと知りたい方へ

そもそもLinuxについて、

「実はなんとなくしか理解していない…」
「Linuxを効率よく学習する方法が知りたい」

といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!



まとめ

ここでは、Linuxでファイルの差異を確認する「diff」コマンドについて、

  • diffコマンドとは
  • diffコマンドの使い方
  • diffコマンドのオプションと使い方

について解説しました。

ソースファイルに修正を加えた場合など、正しく変更されているか「diff」コマンドで差異を確認する機会はよくありますので、使い方はよく理解しておきましょう。

もし、diffの使い方を忘れてしまったら、この記事を参考にしてくださいね。

Writer

侍エンジニア編集部

株式会社SAMURAI

侍エンジニアは「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close