すべてを

▼開く

閉じる▲

2つのファイルの違いを表示する(context形式)

○元ファイル「original.txt」と変更後のファイル「modified.txt」の差分を取る(context形式)

diffコマンドで-cオプション、元ファイルと比較するファイルを指定する
$ diff -c original.txt modified.txt
*** original.txt        2005-07-20 16:43:24.000000000 +0900
--- modified.txt        2005-07-20 16:43:30.000000000 +0900
***************
*** 3,9 ****
  2つのファイルを比較してその違いを出力する。

  両方のファイルに存在する行
- originalファイルにだけ存在する行


! 何らかの変更があった行
--- 3,9 ----
  2つのファイルを比較してその違いを出力する。

  両方のファイルに存在する行

+ modifiedファイルにだけ存在する行

! なにか変更があった行

diffコマンドで-cオプション、元ファイル「original.txt」と変更後のファイル「modified.txt」を指定すると、2つのファイルの差分をcontext形式で出力する。

context形式では、元ファイルと変更後のファイルの該当部分の双方を別々に表示する。

context形式のdiff出力の見方

比較する2つのファイルの内容

元ファイル「original.txt」の内容 更新ファイル「modified.txt」の内容
diff diff
2つのファイルを比較してその違いを出力する。 2つのファイルを比較してその違いを出力する。
両方のファイルに存在する行 両方のファイルに存在する行
originalファイルにだけ存在する行
modifiedファイルにだけ存在する行
何らかの変更があった行 なにか変更があった行

diffコマンドの出力

*** original.txt        2005-07-20 16:43:24.000000000 +0900
--- modified.txt        2005-07-20 16:43:30.000000000 +0900

1行目と2行目は、比較するファイルの情報である。

***元ファイル
---更新ファイル

*** 3,9 ****                              <- 元ファイルの3行目から9行目を表す
  2つのファイルを比較してその違いを出力する。

  両方のファイルに存在する行
- originalファイルにだけ存在する行            <- 元ファイルから削除された行

! 何らかの変更があった行                   <- 更新された行
--- 3,9 ----                              <- 更新ファイルの3行目から9行目を表す
  2つのファイルを比較してその違いを出力する。

  両方のファイルに存在する行

+ modifiedファイルにだけ存在する行          <- 更新ファイルに追加された行

! なにか変更があった行                     <- 更新された行

「*** 行,行 ***」は元ファイルの行の範囲を表す。

「--- 行,行 ----」は更新ファイルの行の範囲を表す。

行頭に何も記号がない行は、双方のファイルで変更のない部分である。

context形式の差分情報は、元ファイルから削除された行、追加された行、変更された行を表す。

+更新ファイルに追加された行 (元ファイルに存在しない)
-元ファイルから削除された行 (更新ファイルに存在しない)
!更新された行

2つのファイルの違いを表示する(side-by-side 形式)

○元ファイル「original.txt」と変更後のファイル「modified.txt」の差分を取る(side-by-side 形式)

diffコマンドで-y、-wオプション、桁数、元ファイルと比較するファイルを指定する
$ diff -y -W 80 original.txt modified.txt
diff                                    diff

2つのファイルを比較してその違いを出力   2つのファイルを比較してその違いを出力

両方のファイルに存在する行              両方のファイルに存在する行
originalファイルにだけ存在する行      <

                                      > modifiedファイルにだけ存在する行

何らかの変更があった行                | なにか変更があった行

diffコマンドで-yオプション、-wオプションと桁数「80」、元ファイル「original.txt」と変更後のファイル「modified.txt」を指定すると、2つのファイルの差分をside-by-side 形式で横幅80桁で出力する。

side-by-side 形式では、元ファイルと変更後のファイルが2列で表示され、2つのファイルの間にマーカーが付けられる。

side-by-side形式のdiff出力の見方

ファイル間に付けられるマーカーの意味

マーカー 意 味
` ' 対応する行が共通、同一である
| 対応する行が異なる
< 1番目のファイルにだけこの行が存在する
> 2番目のファイルにだけこの行が存在する
( 1 番目のファイルにだけこの行が含まれているが、違いは無視される。
) 2 番目のファイルにだけこの行が含まれているが、違いは無視される。
\ 対応する行が異なる。1番目の行だけに行末の改行がない。
/ 対応する行が異なる。2番目の行だけに行末の改行がない。

--left-columnオプションで共通する行を左側だけに表示する
$ diff -y -W 80 --left-column original.txt modified.txt
diff                                  (
                                      (
2つのファイルを比較してその違いを出力 (
                                      (
両方のファイルに存在する行            (
originalファイルにだけ存在する行      <
                                      (
                                      > modifiedファイルにだけ存在する行
                                      (
何らかの変更があった行                | なにか変更があった行

diffコマンドで、-yオプション、-Wオプションでコラム数を80、--left-columnオプション、元ファイル「original.txt」と変更後のファイル「modified.txt」を指定すると、差分の共通行を左側にのみ表示するside-by-side 形式になる。

2つのファイルの違いを表示する(unified形式)

○元ファイル「original.txt」と更新ファイル「modified.txt」の差分を取る(unified形式)

diffコマンドで-uオプション、元ファイルと比較するファイルを指定する
$ diff -u original.txt modified.txt
--- original.txt        2005-07-20 16:43:24.000000000 +0900
+++ modified.txt        2005-07-20 16:43:30.000000000 +0900
@@ -3,7 +3,7 @@
 2つのファイルを比較してその違いを出力する。

 両方のファイルに存在する行
-originalファイルにだけ存在する行

+modifiedファイルにだけ存在する行

-何らかの変更があった行
+なにか変更があった行

diffコマンドで-uオプション、元ファイル「original.txt」と更新ファイル「modified.txt」を指定すると、2つのファイルの差分をunified形式で出力する。

unified形式では、元ファイルと更新ファイルの該当部分を並べて表示する。

unified形式のdiff出力の見方

元ファイル「original.txt」の内容 更新ファイル「modified.txt」の内容
diff diff
2つのファイルを比較してその違いを出力する。 2つのファイルを比較してその違いを出力する。
両方のファイルに存在する行 両方のファイルに存在する行
originalファイルにだけ存在する行
modifiedファイルにだけ存在する行
何らかの変更があった行 なにか変更があった行

--- original.txt        2005-07-20 16:43:24.000000000 +0900
+++ modified.txt        2005-07-20 16:43:30.000000000 +0900

1行目と2行目は、比較するファイルの情報である。

---元ファイル
+++更新ファイル

「@@ -3,7 +3,7 @@」

3行目は、ファイル中の比較対象となった行の情報である。

「-3,7」 「-」が元ファイルを意味し、「3」が位置、「7」が行数
つまり、元ファイルの3行目から7行分を比較
「+3,7」 「+」が更新ファイルを意味し、「3」が位置、「7」が行数
つまり、更新ファイルの3行目から7行分を比較

 2つのファイルを比較してその違いを出力する。

 両方のファイルに存在する行
-originalファイルにだけ存在する行           <- 元ファイルから削除された行

+modifiedファイルにだけ存在する行          <- 元ファイルに追加された行

-何らかの変更があった行                  <- 元ファイルから削除された行
+なにか変更があった行                    <- 元ファイルに追加された行

unified形式の差分情報は、元ファイルを基準にして追加と削除で表す。

+元ファイルに追加された行
-元ファイルから削除された行

修正や変更があった行も、削除と追加という形で表示される。