echo color coding stopped working in mountain lion
Solution 1:
As described in the Application Usage section of the POSIX description of the echo command, the -n
option and escape sequences are not very portable (due to different support in the various branches of the Unix family tree).
The printf
command (which, like echo, is also builtin to most shells, and available as an external command) is more reliably standardized (though the syntax is not the same; e.g. you need to watch for %
in the first argument, and multiple arguments are not automatically joined with a space):
printf 'Some text \e[0;32m in color \e[0m no more color\n'
printf '%s \e[0;32m%s\e[0m %s\n' 'Some text' 'in color' 'no more color'
Solution 2:
The problem was that the escape code \e has been removed in mountain lion's version of echo. Change \e to \033 and it will work.
Solution 3:
A reliable way to do this is through tput:
RED=`tput setaf 1`
GREEN=`tput setaf 2`
NOCOLOR=`tput sgr0`
echo "Some text ${RED}in red color${NOCOLOR} no more color"