diff は2つのファイルの違いを行単位で表示するコマンドです。`<` と `>` の読み方、`-u` と `-y` の見やすい形式、同じかどうかだけ知りたいときの `-q` を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-06
diff [オプション] ファイル1 ファイル2
2つのファイルを行単位で比べ、違うところだけを出します。
設定ファイルを書き換えた後、控えと見比べる場面です。
$ cat site.conf.bak
server_name localhost
listen 80
root /var/www/html
gzip off
$ cat site.conf
server_name example.com
listen 80
root /var/www/html
gzip on
client_max_body_size 10m
違いを出します。
$ diff site.conf.bak site.conf
1c1
< server_name localhost
---
> server_name example.com
4c4,5
< gzip off
---
> gzip on
> client_max_body_size 10m
読み方は3つ覚えれば足ります。
| 記号 | 意味 |
|---|---|
< | 1つ目のファイルの行 |
> | 2つ目のファイルの行 |
1c1 | 1行目が変更された(c は change) |
a は追加、d は削除です。
4c4,5 は「1つ目の4行目が、2つ目の4〜5行目に変わった」という意味になります。
-u を付けると、前後の行も含めた形式になります。
$ diff -u site.conf.bak site.conf
--- site.conf.bak
+++ site.conf
@@ -1,4 +1,5 @@
-server_name localhost
+server_name example.com
listen 80
root /var/www/html
-gzip off
+gzip on
+client_max_body_size 10m
- が消えた行、+ が増えた行、印の無い行は変わっていない行です。
git が出す差分と同じ形式なので、見慣れているならこちらが速いです。
左右に並べたいときは -y です。
$ diff -y site.conf.bak site.conf
server_name localhost | server_name example.com
listen 80 listen 80
root /var/www/html root /var/www/html
gzip off | gzip on
> client_max_body_size 10m
| が変わった行、> が2つ目にだけある行です。
同じファイルを比べると、何も出ません。
$ diff a.txt b.txt
$ echo $?
0
違いがあるときだけ出力されるのが diff の約束です。
中身ではなく「違うかどうか」だけ知りたいときは -q を使います。
$ diff -q site.conf.bak site.conf
Files site.conf.bak and site.conf differ
$ echo $?
1
終了コードは、同じなら 0、違えば 1 です。
スクリプトの中で分岐したいときは、この値を見ます。
diff は、「変えたつもり」と「実際に変わったもの」を突き合わせるときに打つコマンドです。
| 場面 | 打ち方 |
|---|---|
| 書き換えた設定を控えと見比べる | diff site.conf.bak site.conf |
| git と同じ形式で見る | diff -u 古い 新しい |
| 左右に並べて見る | diff -y 古い 新しい |
| 違うかどうかだけ知る | diff -q 古い 新しい |
| 大文字と小文字の違いを無視する | diff -i a.txt b.txt |
sed -i.bak で残した控えと突き合わせると、置換の結果をそのまま確認できます。
引数の順番で < と > の意味が入れ替わります。
diff 古い 新しい の順に渡すのが慣習です。
逆にすると、追加と削除が反転して読めます。
何も出ないのは成功です。 出力が無いときは同じ、というだけです。 エラーではないので、心配せず次に進んでください。
ファイルが無いときは、そう言われます。
$ diff nothing.txt a.txt
diff: nothing.txt: No such file or directory
2つ渡さないと動きません。
$ diff site.conf
diff: missing operandwebterm.appこのサイト
ターミナル基礎
よく使うコマンドを学ぶ
learn.webterm.app別のサイト
