Introduction
La echo
commande renvoie une chaîne donnée à la tuyau de sortie standard, pointant généralement vers le terminal. Bien que le tube de sortie standard puisse pointer vers d'autres interfaces - le echo
La commande est généralement utilisée pour imprimer et afficher des messages dans le terminal. Par défaut, le texte du message affiché hérite de la couleur des autres textes du terminal (qui est personnalisable en soi). Cependant, il existe plusieurs façons de modifier la couleur de sortie de echo
– à la fois pour les chaînes individuelles et pour les messages entiers.
Dans ce petit guide, nous verrons comment vous pouvez changer la couleur de sortie de
echo
dans les systèmes basés sur Linux, en utilisant les codes d'échappement ANSI,tput
et comment vous pouvez rendre ce processus moins verbeux dans les scripts Bash.
Changer la couleur de sortie avec les codes d'échappement ANSI
Le moyen le plus simple de changer la couleur consiste à utiliser des séquences/codes d'échappement ANSI. Tous les codes d'échappement ANSI commencent par Escape
caractère, qui peut être représenté sous différents formats – 27
en décimal, x1B
en hexadécimal, comme clé de contrôle ^[
ou 33
au format octal. Les séquences sont ensuite suivies de la commande :
33[command
Où la parenthèse ouvrante (Introducteur de séquence de contrôle) est facultatif, mais permet de séparer la commande du caractère d'échappement. Lorsque vous mettez un code couleur comme la commande, il change la couleur du texte entrant :
33[0;34
0;34
est le code de la couleur bleue, par exemple. Avec cela seul, vous pouvez changer la couleur du texte dans echo
avec:
33[0;34Text
Où Text
serait de couleur bleue. Sinon, envisagez un simple script bash pour imprimer "Bienvenue en France" aux couleurs du drapeau français :
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Le facultatif -e
drapeau du echo
La commande vous permet d'utiliser des caractères spéciaux comme n
(nouvelle ligne) et t
(tabulation) à l'intérieur de la chaîne d'entrée.
Une fois le script exécuté :
$ ./colors.sh
Il en résulte :
Les codes ANSI ne se limitent pas à la couleur, mais peuvent également être appliqués au style. Les codes 0..9
représentent les styles de texte, tandis que les codes 30...37
représenter les couleurs :
Couleur | Codes | Styles de texte | Codes |
Noir | 30 | Texte simple | 0 |
Rouge | 31 | Le texte en gras | 1 |
Vert | 32 | Texte de faible intensité | 2 |
Marron / Orange | 33 | Souligner le texte | 4 |
Bleu | 34 | Texte clignotant | 5 |
Violet | 35 | Texte invisible | 8 |
Cyan | 36 | Texte barré | 9 |
Gris Clair | 37 |
Créons un script bash pour explorer certaines de ces options :
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
L'exécution de ce script entraîne :
Consultez notre guide pratique et pratique pour apprendre Git, avec les meilleures pratiques, les normes acceptées par l'industrie et la feuille de triche incluse. Arrêtez de googler les commandes Git et en fait apprendre il!
De même, vous pouvez modifier la couleur de fond de ces textes à l'aide de codes 40..47
:
Couleur | Codes |
Noir | 40 |
Rouge | 41 |
Vert | 42 |
Marron / Orange | 43 |
Bleu | 44 |
Violet | 45 |
Cyan | 46 |
Gris Clair | 47 |
Changer l'arrière-plan d'une chaîne donnée revient à la même règle que pour changer la couleur de la police - le code lui-même change le comportement :
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Remarque: En règle générale, vous pouvez traduire les couleurs de police en couleurs d'arrière-plan en ajoutant 10. 30
est la couleur de police noire, 40
est la couleur de fond noire.
Changez la couleur de sortie avec le tput
Une alternative aux codes ANSI consiste à utiliser le tput
commander:
$ tput setaf color_code
setf
permet 8 couleurs, tandis que setaf
permet 256 couleurs donc selon la commande que vous utilisez, vous pouvez aller entre 0..7
ainsi que 0..255
que les codes couleurs. Les deux les commandes dédient 0..7
aux mêmes codes couleurs, tandis qu'avec setaf
, 8..15
sont des couleurs à haute intensité, et 16..231
sont des teintes différentes des 8 premiers, et 232..255
sont des couleurs en niveaux de gris :
Crédit: Wikipédia
Enfin, tput
permet aussi de changer la couleur de fond, d'ajouter du gras, de baisser l'intensité, etc. avec d'autres commandes :
Styles de texte | Commandes |
Couleur de premier plan | Setaf |
Couleur de fond | setab |
Pas de style | SGV0 |
Le texte en gras | goupille |
Texte de faible intensité | dim |
Souligner le texte | smul |
Texte clignotant | cligner des yeux |
Inverser le texte | tour |
Créons un autre script qui utilise tput
pour changer la couleur de sortie echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Ce script imprimera la sortie suivante dans le terminal :
La commande tput offre un moyen simple d'imprimer n'importe quelle couleur grâce à un simple code couleur. Créons maintenant un script capable d'imprimer chaque code couleur disponible pour la commande tput :
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Il imprimera de 0 à 255 couleurs et leurs codes :
Conclusion
Dans ce petit guide, nous avons vu comment vous pouvez changer la couleur de echo
la sortie de sous Linux - en utilisant les séquences d'échappement ANSI et le tput
commander.
Nous avons également exploré comment vous pouvez rendre le processus moins verbeux en utilisant des variables Bash, en modifiant les couleurs d'arrière-plan et en stylisant le texte.