213 lines
4.2 KiB
Bash
213 lines
4.2 KiB
Bash
|
#!/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=7
|
|||
|
# INVISIBLE=8
|
|||
|
# BARRE=9
|
|||
|
# 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 l’entré 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 " 7- inverse"
|
|||
|
echo " 8- invisible"
|
|||
|
echo " 9- barre"
|
|||
|
echo
|
|||
|
echo "Script fait avec amour. ;-)"
|
|||
|
}
|
|||
|
# Pas d’argument? Vers l’aide.
|
|||
|
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
|