2021.09.13  

【Linux】diffでコマンド実行結果を比較する

Linux    

この記事では次の実行例について紹介します。

  1. コマンドの実行結果同士の比較
  2. コマンドの実行結果とファイルの中身を比較
  3. diffで改行が入ると差分がでてしまう問題の対策

コマンド実行結果同士の比較

結論としてはdiff <(コマンド1) <(コマンド2)のかたちで記述すれば良いです。

下記の例は同じディレクトリに対してls -lを実行しているので差分なしとなります。

$ diff <(ls -l) <(ls -l) 

こちらの例は、同じディレクトリに対してls -llsでコマンドの実行結果を比較しています。
-lオプション有り無しでは実行結果が違うので差分が出ています。

$ diff <(ls -l) <(ls) 
1,2c1
< total 0
< -rw-r--r-- 1 root root 0  9月 13 21:41 hoge
---
> hoge

コマンド実行結果とファイル中身を比較

コマンド実行結果とファイルの中身を比較することもできます。
下記はcrontab -ljob_save_file.txtを比較した結果です。
ちなみcrontab -lcronの設定情報を表示するコマンドです。

$ 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

参考サイト

・【 diff 】コマンド(応用編その2)――テキストファイルの差分を出力する
・ cron の設定ガイド

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信