la codificación del color del eco dejó de funcionar en el león de montaña

6

El siguiente texto 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 -e no hubiera sido presentado como un argumento para hacer eco.

    
pregunta Hugo 13.12.2012 - 17:29

3 respuestas

13

Como se describe en la Sección de uso de la aplicación de Descripción POSIX del echo comando , la opción -n y las secuencias de escape no son muy portátiles (Debido al soporte diferente en las diversas ramas del árbol de familia de Unix).

El comando printf (que, como echo , también está integrado en la mayoría de los shells y disponible como comando externo) está estandarizado de manera más confiable (aunque la sintaxis no es la misma; por ejemplo, usted hay que estar atento a % en el primer argumento, y los múltiples argumentos 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'
    
respondido por el Chris Johnsen 14.12.2012 - 06:27
14

El problema fue que el código de escape se eliminó en la versión de eco del león de montaña. Cambie \ e a \ 033 y funcionará.

    
respondido por el Hugo 13.12.2012 - 17:49
2

Una forma confiable de hacerlo es a través de tput:

RED='tput setaf 1'
GREEN='tput setaf 2'
NOCOLOR='tput sgr0'

echo "Some text ${RED}in red color${NOCOLOR} no more color"
    
respondido por el Jpsy 17.09.2016 - 11:22

Lea otras preguntas en las etiquetas