私はPiモデルBでRasbian 3.12.26+を実行しています。
私の cron エントリは次のようになります。
* * * * * sleep 11; { echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log
私のログは次のようになります:
-en \e[1;4;33m
Thu Sep 4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!
ただし、コマンドを bash に貼り付けると、意図したとおりに動作します。
{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log
そして出力は
Thu Sep 4 14:27:51 UTC 2014
This is output from curl!
最初の行は意図したとおりに下線が引かれ、太字で黄色になっています。
何らかの理由で、crontab で実行すると、echo は「-en」を引数として受け取る代わりに出力します。その結果、カラー エスケープ シーケンスはエスケープされません。
何が起こったのですか?
答え1
おそらく cron は /bin/sh を使用します。次の出力を比較して確認してください。
/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
上記はあなたが得る出力を生成します
/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
一方、bashで同じコマンドを実行すると、必要な出力が生成されます。