目次
01. 目的
02. コマンド
diffとは (+このページの目的)
diffは、2つのファイルの差分(変更・追加・削除)を検出するコマンドです。
設定ファイルの変更確認や、修正内容のレビューなどでよく使われます。
このページの目的
diffで以下2つのファイルを比較します。
test1.txt
123
456
789
test2.txt
123
455
789
abc
test2.txtの2行目は、test1.txtの2行目と異なっています。
4行目は、test2.txtのみにあります。
diffコマンドで差分を確認する
| diff ファイル1 ファイル2 |
diffコマンドで確認します。
$ diff test1.txt test2.txt
2c2
< 456
---
> 455
3a4
> abc
| < は左のファイルの内容 > は右のファイルの内容 |
2c2のcは、changedを表し変更の意味です。
2cの2はtest1.txtの2行目です。
c2の2はtest2.txtの2行目です。
< 456 は、test1.txtの2行目で456になっています。
> 455 は、test2.txtの2行目で455になっています。
→左ファイルの2行目が、右ファイルの2行目に変更されている
3a4のaは、addedを表し追加の意味です。
3a4の4はtest2.txtの4行目です。
> abcは、test2.txtの4行目でabcになっています。
→左ファイルの3行目の後に、右ファイルの4行目が追加されている
dが表示された場合は、deletedを意味し削除の意味です。
ファイルを左右に表示する(diff -y)
| diff -y ファイル1 ファイル2 |
diffコマンドにyオプションをつけるとファイルを左右に表示します。
$ diff -y test1.txt test2.txt
123 123
456 |455
789 789
>abc
| | は差分がある行(変更) < は左ファイルのみの行 > は右ファイルのみの行 |
3行目は、右側に縦線があります。変更がある行です。
5行目の>は、test2.txtのみある行を表しています。
diffコマンドで差分を確認する(diff -c)
| diff -c ファイル1 ファイル2 |
-cオプションをつけると以下のように出力されます。(Context形式)
$ diff -c test1.txt test2.txt
*** test1.txt 2023-03-02 05:52:51.257869339 -0800
--- test2.txt 2023-03-02 05:52:37.787091606 -0800
***************
*** 1,3 ****
123
! 456
789
--- 1,4 ----
123
! 455
789
+ abc
!は変更、+は追加、-は削除です。
Context形式・・・前後の行も含めて差分を表示する(変更箇所の前後文脈が分かる)
diffコマンドで差分を確認する(diff -u)
| diff -u ファイル1 ファイル2 |
-uオプションをつけると以下のように出力されます。(Unified形式)
$ diff -u test1.txt test2.txt
--- test1.txt 2023-03-02 05:52:51.257869339 -0800
+++ test2.txt 2023-03-02 05:52:37.787091606 -0800
@@ -1,3 +1,4 @@
123
-456
+455
789
+abc
-が削除(旧)、+が追加(新)で、変更は-と+の組み合わせで表現されます。
Unified形式・・・変更前後を1つの形式で表示(Gitやパッチでよく使われる)
ディレクトリ比較
diff -r dir1 dir2
設定の差分確認などで使用します。
無視オプション
diff -i ファイル1 ファイル2 # 大文字小文字無視
diff -w ファイル1 ファイル2 # 空白無視
設定ファイル比較でよく使います。
横並び表示で差分のある行だけを表示
2つのファイルを横並び表示して、差分のある行だけを表示します。
diff -y --suppress-common-lines ファイル1 ファイル2
差分だけ見たいとき便利です。
関連の記事
