Je connais les bibliothèques dans des langages tels que Ruby et Javascript pour faciliter la colorisation de vos scripts de terminal en utilisant des noms de couleur comme "rouge".
Mais y a-t-il quelque chose comme ça pour les scripts shell dans Bash, ou Ksh, ou autre chose?
bash
shell-script
terminal
colors
le miroir
la source
la source
Réponses:
Vous pouvez définir des couleurs dans vos scripts bash comme ceci:
Et puis utilisez-les pour imprimer dans vos couleurs souhaitées:
la source
Vous pouvez utiliser
tput
OUprintf
Utilisation
tput
,il suffit de créer une fonction comme ci-dessous et de les utiliser
vous pouvez appeler la fonction ci-dessus en utilisant
shw_err "WARNING:: Error bla bla"
En utilisant
printf
la source
echo -e
n'est pasprintf
, et a également besoin d'un avertissement qu'il diffère de l'tput
option en ce qu'il ne s'adapte pas automatiquement en fonction$TERM
.En zsh :
la source
print -P '%F{red}blah%f'
Pour les utilisations courantes simples (ligne complète de texte dans une seule couleur uniquement, avec un retour à la ligne), j'ai modifié le code de jasonwryan comme suit:
la source
awk -v red="$(printf '\e[1;31m%%s\e[0m\\n')" -v green="$(printf '\e[1;32m%%s\e[0m\\n')" 'BEGIN { printf red, "This text is in red"; printf green, "This text is in green" }'
Il vaut mieux utiliser
tput
ce qui gérera les caractères d'échappement en fonction des capacités de sortie / terminal. (Si un terminal ne peut pas interpréter\e[*
les codes de couleur, il sera "pollué", ce qui rendra la sortie plus difficile à lire. (Ou parfois, si vous avez unegrep
telle sortie, vous les verrez\e[*
dans les résultats)Voir ce tutoriel pour
tput
.Tu peux écrire :
Voici un tutoriel pour imprimer une horloge colorée dans le terminal.
Notez également que
tput
peut toujours imprimer le caractère d'échappement lors de la redirection de STDOUT vers un fichier:Pour éviter que cela ne se produise, configurez vos
tput
variables comme proposé dans cette solution .la source