bazar/Bash/couleurs.sh
2022-12-30 22:57:13 +01:00

213 lines
4.2 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Pour faire du formattage en couleur.
# On effectue des commandes comme
#+« CODE=$( echo -e "\E[$( echo $EFFET ) ;$( echo $CHAR );$( echo $FONT )m TEXT \E[0m" ) ; echo $CODE ; »
#+echo -e -n $( printf '\\E[%1d;3%1d;4%1dm%s\\E[0m' $EFFECT $CHAR $FONT "$TEXT" )
#+ou « CODE=$( echo -e "\033[$( echo $EFFET );$( echo $CHAR );$( echo $FONT )m TEXT \033[0m" ) ; echo $CODE ; ».
# Codes de couleur pour CHAR et FONT.
# NOIR=0
# ROUGE=1
# VERT=2
# JAUNE=3
# BLEU=4
# MAGENTA=5
# CYAN=6
# BLANC=7
# Codes supplémentaires pour EFFECT.
# SIMPLE=0
# GRAS=1
# INACTIF=2
# ITALIQUE=3
# SOUSLIGNE=4
# CLIGNOTANT=5
# INVERSE=6
# INVISIBLE=7
# BARRE=8
# Case à tester : case $BIDULE in 0) MOT=0 ;; 1) MOT=1 ;; 2) MOT=2 ;; 3) MOT=3 ;; *) MOT=rien ;; esac ; echo $MOT ;
# On veut intégrer 3 options :
#+* Couleur de caractère "--char";
#+* Couleur de font "--font";
#+* Format de texte "--effect".
# Au moins un argument : le texte.
# Pas d'argument --> info des commandes.
# Fonction pour les choix des couleurs.
function choixCouleur()
{
case $1 in
(0|noir)
declare -r -i COULEUR=0
;;
(1|rouge)
declare -r -i COULEUR=1
;;
(2|vert)
declare -r -i COULEUR=2
;;
(3|jaune)
declare -r -i COULEUR=3
;;
(4|bleu)
declare -r -i COULEUR=4
;;
(5|magenta)
declare -r -i COULEUR=5
;;
(6|cyan)
declare -r -i COULEUR=6
;;
(7|blanc)
declare -r -i COULEUR=7
;;
(*)
declare -r -i COULEUR=7
;;
esac
echo $COULEUR
}
# Fonction pour les choix de forme.
function choixForme()
{
case $1 in
(0|simple)
declare -r -i COULEUR=0
;;
(1|gras)
declare -r -i COULEUR=1
;;
(2|inactif)
declare -r -i COULEUR=2
;;
(3|italique)
declare -r -i COULEUR=3
;;
(4|sousligne)
declare -r -i COULEUR=4
;;
(5|clignotant)
declare -r -i COULEUR=5
;;
(6|inverse)
declare -r -i COULEUR=7
;;
(7|invisible)
declare -r -i COULEUR=8
;;
(8|barre)
declare -r -i COULEUR=9
;;
(*)
declare -r -i COULEUR=0
;;
esac
echo $COULEUR
}
# Sans argument, le texte d'aide.
function hlp()
{
echo "Commande pour formater facilement un texte."
echo -e "Usage : $0 [-h|--text]"
echo -e "Usage : $0 [-c|--char CHAR] [-f|--font FONT] [--effect EFFECT] [--] (-|TEXT)"
echo
echo "--char CHAR"
echo " Colorie les caractères du texte TEXT."
echo ""
echo "--font FONT"
echo " Colorie le font du texte TEXT."
echo ""
echo "--effect EFFECT"
echo " Formate les caractères du texte TEXT."
echo
echo "TEXT : une chaîne de caractères brutes."
echo -e " Possibilité de passer par lentré standard via \"-\"."
echo
echo "CHAR et FONT :"
echo " 0- noir"
echo " 1- rouge"
echo " 2- vert"
echo " 3- jaune"
echo " 4- bleu"
echo " 5- magenta"
echo " 6- cyan"
echo " 7- blanc"
echo
echo "EFFECT :"
echo " 0- simple"
echo " 1- gras"
echo " 2- inactif"
echo " 3- italique"
echo " 4- souligne"
echo " 5- clignotant"
echo " 6- inverse"
echo " 7- invisible"
echo " 8- barre"
echo
echo "Script fait avec amour. ;-)"
}
# Pas dargument? Vers laide.
if [ -z "$1" ]
then
hlp
exit 0
fi
# Paramètres par défaut
# Simple blanc sur noir
declare -i CHAR=7
declare -i FONT=0
declare -i EFFECT=0
declare TEXT=' '
# Contrôle des entrées.
while [[ $# -gt 0 ]]
do
case $1 in
(-h|--help)
hlp
exit 0
;;
(-c|--char)
CHAR=$(choixCouleur "$2")
shift 2
;;
(-f|--font)
FONT=$(choixCouleur "$2")
shift 2
;;
(-e|--effect)
EFFECT=$(choixForme "$2")
shift 2
;;
# Dernière entrée.
(--)
if [ -n "$2" ]
then
if [ "$2" = "-" ]
then
TEXT="$(< /dev/stdin)"
else
TEXT="$2"
fi
shift 2
else
shift 1
fi
break
;;
# stdin.
(-)
TEXT="$(< /dev/stdin)"
shift 1
break
;;
# Texte par défaut.
(*)
TEXT="$1"
shift 1
break
;;
esac
done
# Finalement, on récupère les trois options et le texte.
echo "printf '\E[%1d;3%1d;4%1dm%s\E[0m\n' ${EFFECT} ${CHAR} ${FONT} '${TEXT}'" | bash