Estoy ejecutando Rasbian 3.12.26+ en un Pi modelo B.
Así es como se ve mi entrada 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
Así es como se ve mi registro:
-en \e[1;4;33m
Thu Sep 4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!
Sin embargo, cuando pego el comando en bash, funciona según lo previsto:
{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log
Y la salida es
Thu Sep 4 14:27:51 UTC 2014
This is output from curl!
Con la primera línea subrayada, en negrita y en amarillo según lo previsto.
Por alguna razón, cuando se ejecuta mediante un crontab, el eco imprime "-en" en lugar de tomarlo como argumento. Como resultado, las secuencias de escape de color no se escapan.
¿Lo que da?
Respuesta1
Probablemente cron use /bin/sh. Compruébelo usted mismo comparando el resultado de lo siguiente:
/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
Lo anterior produce el resultado que está obteniendo
/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
Mientras que el mismo comando en bash produce el resultado que desea