8 votes

le codage couleur de l'écho ne fonctionne plus dans mountain lion

L'opération suivante produit un texte de couleur différente sur le terminal dans Lion, mais pas dans Mountain Lion. Pourquoi ? Que peut-on faire pour que l'écho soit en couleur sur Mountain Lion ?

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

Dans Mountain Lion, il s'imprime simplement comme si -e n'avait pas été donné comme argument à echo.

1 votes

Étrangement, man echo ne mentionne pas le drapeau -e, même si celui-ci fonctionne. Au moins pour \n

1 votes

La gestion des echo décrit le /bin/echo commande externe, et non la echo qui est intégré dans le shell que vous utilisez (par exemple, celui qui est nommé dans le fichier d'aide de l'utilisateur). #! en haut de votre script). Vous devez consulter la page de manuel du shell que vous utilisez (probablement bash ) pour voir quelles options son echo supports.

15voto

duane Points 1351

Le problème était que le code d'échappement \e a été supprimé dans la version d'echo de mountain lion. Changez \e à \033 et ça marchera.

0 votes

Ce site est valable pour Yosemite, merci beaucoup

0 votes

C'est vrai aussi pour Sierra, malgré man bash liste \e comme un échappement valide.

13voto

Nip Points 362

Comme décrit dans le Section Utilisation de l'application de la Description POSIX de la echo commande le -n Les options et les séquences d'échappement ne sont pas très portables (en raison d'un support différent dans les diverses branches de l'arbre généalogique d'Unix).

El printf (qui, comme echo est également intégrée à la plupart des shells et disponible en tant que commande externe) est normalisée de manière plus fiable (bien que la syntaxe ne soit pas la même ; par exemple, vous devez faire attention à la commande % dans le premier argument, et les arguments multiples ne sont pas automatiquement joints par un espace) :

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'

0 votes

Merci Chris, j'ai accepté votre réponse car elle était meilleure que celle que j'avais trouvée.

4voto

Jpsy Points 1889

Un moyen fiable de le faire est de recourir à tput :

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

echo "Some text ${RED}in red color${NOCOLOR} no more color"

1 votes

C'est une façon très claire et intelligente de configurer les couleurs !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X