mail コマンドで送信したメールが添付になる

【環境】
$ 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 オプションを付けて制御コードを表示して確認した。