この記事では次の実行例について紹介します。
- コマンドの実行結果同士の比較
- コマンドの実行結果とファイルの中身を比較
- 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