【環境】 $ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) $ mail -V 12.5 7/5/10
やりたかったのは、diff の結果で差分があった時だけメールを送る事。
実査にmailコマンドでdiffの結果をメールしたら、受信側で添付ファイルになってしまった。
テキストメールのつもりが、メールヘッダを見ると、次のようになっていた。
Content-Type: application/octet-stream
diffの結果は何もないはずなのに、見えない何かがある?
となると、怪しいのは制御コードが思い付く。
調べてみると、diff対象のテキストファイルの行末にCRが入っている事がある模様で、diffの結果に改行コード(CR:^M)が含まれてしまうようだった。
diff対象のファイルを出力する側は修正できないため、こちら側で対処するしかない・・・
という訳で、次のようにしてdiffの結果から制御コード(^M)を削除する。
sed -e 's/^M//g' > output.txt
ここで、^M は、ハットと大文字のMではなく、vi で
Ctrl + v Ctrl + m
を入力する。
動作確認には、cat コマンドに -v オプションを付けて制御コードを表示して確認した。