Je suis au courant des bibliothèques dans des langues telles que Ruby et JavaScript pour faciliter la coloration des scripts de vos terminaux en utilisant des noms de couleur comme "Rouge".
Mais y a-t-il quelque chose comme ça pour les scripts shell à bash ou ksh ou quoi que ce soit?
Vous pouvez définir des couleurs dans vos scripts de bash comme si:
red=$'\e[1;31m'
grn=$'\e[1;32m'
yel=$'\e[1;33m'
blu=$'\e[1;34m'
mag=$'\e[1;35m'
cyn=$'\e[1;36m'
end=$'\e[0m'
Puis utilisez-les à imprimer dans vos couleurs requises:
printf "%s\n" "Text in ${red}red${end}, white and ${blu}blue${end}."
Vous pouvez utiliser tput
OR printf
tilisation tput
,
il suffit de créer une fonction comme ci-dessous et utilisez-les
shw_grey () {
echo $(tput bold)$(tput setaf 0) $@ $(tput sgr 0)
}
shw_norm () {
echo $(tput bold)$(tput setaf 9) $@ $(tput sgr 0)
}
shw_info () {
echo $(tput bold)$(tput setaf 4) $@ $(tput sgr 0)
}
shw_warn () {
echo $(tput bold)$(tput setaf 2) $@ $(tput sgr 0)
}
shw_err () {
echo $(tput bold)$(tput setaf 1) $@ $(tput sgr 0)
}
vous pouvez appeler la fonction ci-dessus à l'aide de shw_err "WARNING:: Error bla bla"
tilisation printf
print red; echo -e "\e[31mfoo\e[m"
dans ZSH :
autoload -U colors
colors
echo $fg[green]YES$fg[default] or $fg[red]NO$fg[default]?
Pour des utilisations communes simples (ligne complète de texte dans une seule couleur uniquement, avec la nouvelle ligne de fin) J'ai modifié code de Jasonwryan comme suit:
#!/bin/bash
red='\e[1;31m%s\e[0m\n'
green='\e[1;32m%s\e[0m\n'
yellow='\e[1;33m%s\e[0m\n'
blue='\e[1;34m%s\e[0m\n'
Magenta='\e[1;35m%s\e[0m\n'
cyan='\e[1;36m%s\e[0m\n'
printf "$green" "This is a test in green"
printf "$red" "This is a test in red"
printf "$yellow" "This is a test in yellow"
printf "$blue" "This is a test in blue"
printf "$Magenta" "This is a test in Magenta"
printf "$cyan" "This is a test in cyan"
Mieux vaut utiliser tput
qui gérera des caractères d'échappement en fonction des capacités de sortie/terminal. (Si un terminal ne peut pas interpréter \e[*
Codes de couleur, alors il sera "pollué" qui rend la production plus difficile à lire. (Ou parfois, si vous grep
cette sortie, vous verrez ces \e[*
dans les résultats)
Voir ceci tutoriel pour tput
.
Tu peux écrire :
blue=$( tput setaf 4 ) ;
normal=$( tput sgr0 ) ;
echo "hello ${blue}blue world${normal}" ;
Voici un tutoriel pour imprimer une horloge de couleur dans le terminal.
Aussi, notez que tput
peut toujours imprimer le caractère d'échappement lors de la redirection de stdout dans un fichier:
$ myColoredScript.sh > output.log ;
# Problem: output.log will contain things like "^[(B^[[m"
Pour empêcher que cela se produise, configurez vos variables tput
comme proposé dans cette solution .