Le shell en couleur c'est plus plus mieux

Portrait de furet

Voici une petite fonction bash qui permet d'afficher les principales couleurs de base à savoir noir, rouge, vert, jaune, violet, cyan et blanc.

Mais il faut comprendre comment il est possible de mettre des couleurs en bash.
on commence toujours par une séquence d'échappement : \e[ (ou \033[); il faut aussi indiquer qu'on termine la séquence avec le caractère "m" (sans les quotes).
Exemple :

echo -e "\e[0;33m blabla"

devrait afficher blabla en jaune (enfin jaune c'est approximatif). Ici 0;33 correspond à la couleur jaune justement.

Sans plus attendre le script qui affiche les couleurs de base :

black='\e[0;30m' # Black - Regular
red='\e[0;31m' # Red
green='\e[0;32m' # Green
yellow='\e[0;33m' # Yellow
blue='\e[0;34m' # Blue
purple='\e[0;35m' # Purple
cyan='\e[0;36m' # Cyan
white='\e[0;37m' # White
bldblack='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgreen='\e[1;32m' # Green
bldyellow='\e[1;33m' # Yellow
bldblue='\e[1;34m' # Blue
bldpurple='\e[1;35m' # Purple
bldcyan='\e[1;36m' # Cyan
bldwhite='\e[1;37m' # White
ublack='\e[4;30m' # Black - Underline
ured='\e[4;31m' # Red
ugreen='\e[4;32m' # Green
uyellow='\e[4;33m' # Yellow
ublue='\e[4;34m' # Blue
upurple='\e[4;35m' # Purple
ucyan='\e[4;36m' # Cyan
uwhite='\e[4;37m' # White
bblack='\e[40m'   # Black - Background
bred='\e[41m'   # Red
bgreen='\e[42m'   # Green
byellow='\e[43m'   # Yellow
bblue='\e[44m'   # Blue
bpurple='\e[45m'   # Purple
bcyan='\e[46m'   # Cyan
bwhite='\e[47m'   # White
rst='\e[0m'    # Text Reset
 
function colors
{
    echo -e "\t 0\t 1\t 4\t"
    echo -e "30\t ${black}black${rst}\t ${bldblack}black${rst}\t\
${ublack}black${rst}\t ${bblack}black${rst}"
    echo -e "31\t ${red}red${rst}\t ${bldred}red${rst}\t\
${ured}red${rst}\t  ${bred}red${rst}"
    echo -e "32\t ${green}green${rst}\t ${bldgreen}green${rst}\t\
${ugreen}green${rst}\t  ${bgreen}green${rst}"
    echo -e "33\t ${yellow}yellow${rst}\t ${bldyellow}yellow${rst}\t\
${uyellow}yellow${rst}\t  ${byellow}yellow${rst}"
    echo -e "34\t ${blue}blue${rst}\t ${bldblue}blue${rst}\t\
${ublue}blue${rst}\t  ${bblue}blue${rst}"
    echo -e "35\t ${purple}purple${rst}\t ${bldpurple}purple${rst}\t\
${upurple}purple${rst}\t  ${bpurple}purple${rst}"
    echo -e "36\t ${cyan}cyan${rst}\t ${bldcyan}cyan${rst}\t\
${ucyan}cyan${rst}\t  ${bcyan}cyan${rst}"
    echo -e "37\t ${withe}white${rst}\t ${bldwhite}white${rst}\t\
${uwhite}white${rst}\t  ${bwhite}white${rst}"
}

On peut le mettre dans son .bashrc et taper colors au prompt pour voir la liste des couleurs.
Évidemment j'aurais plus faire une fonction plus jolie, mais bon pas envie.

Comment lire le "tableau" :
En haut nous avons la fonte utilisée : 0 pour normal, 1 pour gras, 4 pour souligné et rien pour la couleur de fond.
Au début de chaque ligne le numéro correspondant à la couleur.
Enfin la séquence "\e[0m" permet de remmettre le formatage du texte à zéro.