42 votes

Pourquoi l'écho ne prend-il pas en charge "\e" (échappement) lors de l'utilisation de l'argument -e dans MacOSX

Lorsque j'essaie d'imprimer du texte coloré en utilisant des séquences d'échappement ANSI via la commande echo intégrée, il semble que la séquence d'échappement \e dans la chaîne que je fournis soit interprétée littéralement au lieu de comme l'"échappement" qu'elle est censée représenter. Cela se produit uniquement dans Snow Leopard - les exemples ci-dessous fonctionnent comme prévu dans Leopard.

Apparemment, echo prend en charge l'option -e car il interprète correctement \n lorsqu'elle est utilisée :

~ $ 
~ $ echo "\n"
\n
~ $ echo -e "\n"

~ $ 

Mais lorsque j'essaie d'utiliser \e, j'obtiens ceci :

~ $ echo -e "\e[34mCOLORS"
\e[34mCOLORS
~ $ 

Comme je l'ai dit, dans Leopard, le résultat ci-dessus me donnerait la chaîne "COLORS" en couleur.

Est-ce que quelqu'un sait pourquoi cela pourrait être un changement intentionnel ? Et avez-vous une solution de contournement pour imprimer des séquences d'échappement ANSI à partir de scripts Bash sur Snow Leopard ?

La version de shell Bash sur mon ordinateur Leopard est 3.2.17(1)-release et 3.2.48(1)-release sur mon ordinateur Snow Leopard.

2voto

Dr Dreyeth Points 21

Ils pourraient essayer de se conformer à POSIX : http://www.opengroup.org/onlinepubs/9699919799/

La partie OPTIONS stipule entre autres choses :

 Les implémentations ne doivent pas supporter d'options.

2voto

Incident Points 169

Pour information, nous sommes sur le point d'ajouter le support \e à /bin/echo et /usr/bin/printf dans coreutils. Notez que les normes C ne spécifient pas \e, mais gcc, perl, bash, ksh et tcsh le supportent

0voto

Tim Howland Points 4638

Vous devez vérifier si l'option "échapper aux caractères non-ascii" a été décochée dans le menu des options d'affichage de terminal.app.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X