La encoding del color del eco dejó de funcionar en el león de montaña

El siguiente text producido con diferente color en la terminal en Lion, pero no en Mountain Lion. ¿Por qué? ¿Qué se puede hacer para hacer eco en color en Mountain Lion?

echo -e "Some text \e[0;32m in color \e[0m no more color"; 

En Mountain Lion, simplemente se imprime como si no se hubiera dado como argumento para repetir.

  • iTerm2: ¿Cómo cambiar el color utilizado para resaltar los resultados de búsqueda?
  • ¿Qué commands de terminal son nuevos o actualizados en Mountain Lion?
  • alternativa a TotalTerminal que funciona con El Capitan
  • ¿Cómo puedo abrir una window de Terminal directamente desde mi location actual de Finder?
  • ¿Qué otras aplicaciones tienen menus de debugging secreta?
  • ¿Cómo cambio la contraseña de un elemento de llavero de la Terminal?
  • macOS Sierra rompe una gran cantidad de commands de "escritura de defecto" de terminal (toque para hacer clic, por ejemplo)
  • Los colors son diferentes cuando SSHing en una máquina Linux desde iTerm2. ¿Cómo puedo estandarizarlos?
  • 3 Solutions collect form web for “La encoding del color del eco dejó de funcionar en el león de montaña”

    Como se describe en la sección Uso de la aplicación de la descripción POSIX del command echo , la opción -n y las secuencias de escape no son muy portátiles (debido a la compatibilidad diferente en las diversas twigs del tree de la familia Unix).

    El command printf (que, como echo , también se incorpora a la mayoría de shells y está disponible como un command externo) se estandariza de forma más confiable (aunque la syntax no es la misma, por ejemplo, hay que mirar % en el primer argumento y los arguments no se unen automáticamente con un espacio):

     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' 

    El problema era que el código de escape \ e ha sido eliminado en la versión del eco del león de montaña. Cambie \ e a \ 033 y funcionará.

    Una forma confiable de hacer esto es a través de tput:

     RED=`tput setaf 1` GREEN=`tput setaf 2` NOCOLOR=`tput sgr0` echo "Some text ${RED}in networking color${NOCOLOR} no more color" 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).