この記事では次の実行例について紹介します。
- コマンドの実行結果同士の比較
- コマンドの実行結果とファイルの中身を比較
- diffで改行が入ると差分がでてしまう問題の対策
コマンド実行結果同士の比較
結論としてはdiff <(コマンド1) <(コマンド2)のかたちで記述すれば良いです。
下記の例は同じディレクトリに対してls -lを実行しているので差分なしとなります。
$ diff <(ls -l) <(ls -l)
こちらの例は、同じディレクトリに対してls -l とlsでコマンドの実行結果を比較しています。
-lオプション有り無しでは実行結果が違うので差分が出ています。
$ diff <(ls -l) <(ls)
1,2c1
< total 0
< -rw-r--r-- 1 root root 0 9月 13 21:41 hoge
---
> hoge
コマンド実行結果とファイル中身を比較
コマンド実行結果とファイルの中身を比較することもできます。
下記はcrontab -lとjob_save_file.txtを比較した結果です。
ちなみcrontab -lはcronの設定情報を表示するコマンドです。
$ diff <(crontab -l) job_save_file.txt
crontab -lの実行結果とjob_save_file.txtの中身はそれぞれ次のようになっています。
# "日曜 8 時 7 分に実行するジョブ"
7 8 * * sun echo "good morning, hogeta"
改行が入ると差分がでてしまう問題の対策
テキストとの差分比較を行うと次のように改行が入ってしまい、差分がでることがあります。
その場合-Bオプションを使用すると、空行の有無を無視してくれるので差分がでなくなります。
・crontab -lの実行結果(改行なし)
[root@centos8 ~]# crontab -l
# "日曜 8 時 7 分に実行するジョブ"
7 8 * * sun echo "good morning, hogeta"
・cat job_save_file.txtの実行結果(改行あり)
[root@centos8 ~]# cat job_save_file.txt
# "日曜 8 時 7 分に実行するジョブ"
7 8 * * sun echo "good morning, hogeta"
・diffの実行結果(-Bオプションなし)
[root@centos8 ~]# diff <(crontab -l) job_save_file.txt
2a3
>
・diffの実行結果(-Bオプションあり)
[root@centos8 ~]# diff -B <(crontab -l) job_save_file.txt