プロセス置換を使用する

<(コマンド)でコマンドの出力をdiffコマンドに渡す。

diff <(コマンド1) <(コマンド2)

プロセス置換を使わない場合は、一時ファイルを作成してからdiffコマンドに渡す必要がある。

コマンド1 > tmp1.txt
コマンド2 > tmp2.txt
diff tmp1.txt tmp2.txt
rm tmp1.txt tmp2.txt

プロセス置換を使った場合はコマンド回数が減るし、一時ファイルを作らなくて済むのでスッキリする。

実行例

$ diff <(ls -l) <(ls -la)
2,3c2,5
< -rw-r--r--  1 sue  staff  36  4  1 16:55 a.txt
< -rw-r--r--  1 sue  staff  24  4  1 11:31 b.txt
---
> drwxr-xr-x   4 sue  staff   128  4  1 11:31 .
> drwxr-xr-x  97 sue  staff  3104  8  8 20:39 ..
> -rw-r--r--   1 sue  staff    36  4  1 16:55 a.txt
> -rw-r--r--   1 sue  staff    24  4  1 11:31 b.txt

応用例: sedコマンドが意図通り動作しているか確認する

sedコマンドの正規表現がうまく動作しているか確認するときに便利。

$ diff test1.txt <(sed 's/abc/ABC/g' test1.txt)
1c1
< 012abcdef
---
> 012ABCdef