【Linux】diffコマンドの結果を見やすく表示する

Linuxコマンド シェルスクリプト

diffコマンドは、その名の通り
2つのファイルの差分を確認するコマンドである。

テストや検証のとき、処理前後の差分を確認したいというケースはよくある。

そんなとき、diffコマンドを使いこなせるようになると、
差分確認が圧倒的に楽になる。

サンプルデータ

今回扱うサンプルデータはこちら。「orange」があるかないかが違う。

fruit1.txt

apple
orange
banana

fruit2.txt

apple
banana

基本構文

基本構文はとてもシンプルだ。

$ diff ファイル1 ファイル2

しかしこのまま使うことはおすすめしない。
理由は非常に見づらいからだ。

実行結果

$ diff fruit1.txt fruit2.txt
2d1
< orange

おすすめ構文

私のおすすめ構文を紹介する。

GitHubで見慣れた形式で差分を表示

GitHubの差分表現は、unified形式というらしい。

私の個人的な感想では、これが一番シンプルだと思う。

$ diff -u ファイル1 ファイル2

実行結果

# fruit2.txtに「orange」がないので、「-」で表現されている
$ diff -u fruit1.txt fruit2.txt
--- fruit1.txt  2023-01-13 08:48:13.000000000 +0900
+++ fruit2.txt  2023-01-13 08:48:25.000000000 +0900
@@ -1,3 +1,2 @@
 apple
-orange
 banana

差分があるかどうかだけを知りたい

とりあえず差分のあり/なしを知りたいというときもよくある。

この場合は次のように-qオプションを利用する。

$ diff -q ファイル1 ファイル2

実行結果

# 差分がある場合、違うということが表示される
$ diff -q fruit1.txt fruit2.txt
Files fruit1.txt and fruit2.txt differ

# 差分がない場合、何も表示されない
$ diff -q fruit1.txt fruit1.txt

横に並べて差分を見たい

やはり横に並べて左右で見比べるのは、
直感的に分かりやすい。

左右にファイルが表示され
差分のあるところは不等号(<, >)でマークがつけられる。

$ diff -y ファイル1 ファイル2

実行結果

$ diff -y fruit1.txt fruit2.txt
apple                                                           apple
orange                                                        <
banana                                                          banana

色が欲しいとき

上記で紹介したdiffコマンドは、全て白黒である。

普通であれば、色付きで見たいところだ。

方法は2通り存在する。

  1. vimdiffコマンドを使う
  2. colordiffコマンドを使う

私はvimmerであり、なおかつインストール不要という点で
vimdiffコマンドを多用している。

実際につかってみると
このような見た目で表示される。

$ vimdiff fruit1.txt fruit2.txt
vimdiffコマンドの実行画面

まとめ

  • GitHubっぽくみる:-u
  • 横に並べてみる:-y
  • 色をつけてみる:vimdiffコマンド
タイトルとURLをコピーしました