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通り存在する。
- vimdiffコマンドを使う
- colordiffコマンドを使う
私はvimmerであり、なおかつインストール不要という点で
vimdiffコマンドを多用している。
実際につかってみると
このような見た目で表示される。
$ vimdiff fruit1.txt fruit2.txt
まとめ
- GitHubっぽくみる:
-u
- 横に並べてみる:
-y
- 色をつけてみる:
vimdiff
コマンド