J'essaie d'ajouter une sortie couleur à mes erreurs dans un script bash que j'ai exécuté sur un mac. Le problème est que les couleurs ne fonctionnent pas. J'ai créé le plus simple des scripts pour démontrer qu'il ne fonctionne pas:
#!/bin/bash
echo -e "\e[1;31m This is red text \e[0m"
Cependant, lorsque je l'exécute, je ne vois aucune couleur, comme le montre cette image. Cependant, la sortie couleur de la commande ls fonctionne correctement.
OSX est livré avec une ancienne version de Bash qui ne prend pas en charge le \e
caractère d'échappement. Utilisation \x1B
ou mettre à jour Bash (brew install bash
).
Encore mieux, cependant, serait d'utiliser tput
.
Utilisation \033
ou \x1B
au lieu de \e
pour représenter de <Esc>
personnage.
echo -e "\033[1;31m This is red text \033[0m"
Voir http://misc.flogisoft.com/bash/tip_colors_and_formatting
Une autre option pourrait être d'utiliser zsh, qui respecte le \e
notation.
#!/bin/zsh
Dans les fichiers de script, printf
pourrait être une autre option, vous devez cependant ajouter "\n"
À la fin.
#!/bin/bash
echo -e "\e[31mOutput as is.\e[m"
printf "\e[32mThis is green line.\e[m\n"
printf "\e[33;1m%s\n" 'This is yellow bold line.'
Testé sur macOS High Sierra 10.13.6:
% /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-Apple-darwin17)
Copyright (C) 2007 Free Software Foundation, Inc.