dポイントプレゼントキャンペーン実施中!

#!/bin/sh

mail -s "test" "info@example.co.jp" <<END
メールテスト

`ls -alh`

END

のようなメールを送信するスクリプトがあります。
メールテストは文字化けしませんでしたが、
`ls -alh`で日付が表示される部分で文字化けします。
どうやらls -alhはLinux環境なのでeuc-jpのようでした。

`ls -alh`の部分を文字化けしないようにするにはどのようにしたら良いのでしょうか?

シェルスクリプトに詳しい方、教えてください。

A 回答 (2件)

#1さんの回答のとおりですが、日付部分を日本語で表示させたい場合は、ls の出力を文字コード変換のフィルタに通す必要があります。


変換フィルタは多々ありますが、大抵の場合、標準で glibcのiconvコマンドが使えるはずです。

本件の場合、シェルスクリプトのメール本文にも日本語があるようですから、出力コードはこれにあわせる必要があります。仮にこれをUTF-8だとすると、

`ls -alh | iconv -f euc-jp -t utf-8`

となります。
-f が入力の文字コード、-t が出力の文字コードです。
iconv --list で、対応文字コードのリストが確認できます。
    • good
    • 0

`LC_ALL=C ls -alh`


で、英語モードで表示されるので、文字コードの心配が無くなります。

文字コード変換のコマンドは、OSによって違います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!