Je cherche un moyen définitif de créer des scripts shell qui génèrent des résultats colorés.
Malheureusement, j’ai du mal à trouver une lib appropriée ou une bonne technique pour ce faire. J’ai trouvé beaucoup d’exemples utiles mais simples comme celui-ci . Le guide le plus complet que j’ai trouvé jusqu’à maintenant est celui-ci .
Avant de commencer à écrire ma propre bibliothèque, je veux vérifier si quelqu’un l’a déjà écrit
Si votre solution ne correspond pas aux observations ci-dessous, ce n’est pas un problème. Je voudrais aussi le lire pour qu’il puisse m’aider si je décide d’écrire ma propre solution
Mes principales préoccupations / observations:
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
Après quelques recherches sur le contrôle des terminaux et le formatage des sorties, j’écris cet extrait qui essaie d’y parvenir. Jusqu’ici ça va très bien
Voici un extrait modifié de mes fichiers dotfiles qui devrait faire ce que vous voulez
RCol='\e[0m' # Text Reset # Regular Bold Underline High Intensity BoldHigh Intens Background High Intensity Backgrounds Bla='\e[0;30m'; BBla='\e[1;30m'; UBla='\e[4;30m'; IBla='\e[0;90m'; BIBla='\e[1;90m'; On_Bla='\e[40m'; On_IBla='\e[0;100m'; Red='\e[0;31m'; BRed='\e[1;31m'; URed='\e[4;31m'; IRed='\e[0;91m'; BIRed='\e[1;91m'; On_Red='\e[41m'; On_IRed='\e[0;101m'; Gre='\e[0;32m'; BGre='\e[1;32m'; UGre='\e[4;32m'; IGre='\e[0;92m'; BIGre='\e[1;92m'; On_Gre='\e[42m'; On_IGre='\e[0;102m'; Yel='\e[0;33m'; BYel='\e[1;33m'; UYel='\e[4;33m'; IYel='\e[0;93m'; BIYel='\e[1;93m'; On_Yel='\e[43m'; On_IYel='\e[0;103m'; Blu='\e[0;34m'; BBlu='\e[1;34m'; UBlu='\e[4;34m'; IBlu='\e[0;94m'; BIBlu='\e[1;94m'; On_Blu='\e[44m'; On_IBlu='\e[0;104m'; Pur='\e[0;35m'; BPur='\e[1;35m'; UPur='\e[4;35m'; IPur='\e[0;95m'; BIPur='\e[1;95m'; On_Pur='\e[45m'; On_IPur='\e[0;105m'; Cya='\e[0;36m'; BCya='\e[1;36m'; UCya='\e[4;36m'; ICya='\e[0;96m'; BICya='\e[1;96m'; On_Cya='\e[46m'; On_ICya='\e[0;106m'; Whi='\e[0;37m'; BWhi='\e[1;37m'; UWhi='\e[4;37m'; IWhi='\e[0;97m'; BIWhi='\e[1;97m'; On_Whi='\e[47m'; On_IWhi='\e[0;107m';
Ensuite, vous pouvez simplement echo -e "${Blu}blue ${Red}red ${RCol}etc...."
echo -e “\ 033 [33; 31m couleur texte” – rouge
echo -e “\ 033 [33; 32m Color Text” – vert
echo -e “\ 033 [33; 33m Color Text” – jaune
echo -e “\ 033 [33; 34m couleur texte” – bleu
echo -e “\ 033 [Texte couleur 33; 35m” – Magenta
echo -e “\ 033 [33; 30m couleur texte” – gris
echo -e “\ 033 [33; 36m Color Text” – Cyan
http://techietent.blogspot.in/2013/03/how-to-echo-colored-text-in-linux-shell.html
J’ai pris la liste de Dure comme source d’inspiration et j’ai fait un peu de séchage. (Et changé \e
en hexadécimal \x1B
, puisque le premier n’est pas pris en charge dans Terminal.app d’OS X depuis Snow Leopard.) Voici ce que j’ai trouvé:
## Colours and font styles ## Syntax: echo -e "${FOREGROUND_COLOUR}${BACKGROUND_COLOUR}${STYLE}Hello world!${RESET_ALL}" # Escape sequence and resets ESC_SEQ="\x1b[" RESET_ALL="${ESC_SEQ}0m" RESET_BOLD="${ESC_SEQ}21m" RESET_UL="${ESC_SEQ}24m" # Foreground colours FG_BLACK="${ESC_SEQ}30;" FG_RED="${ESC_SEQ}31;" FG_GREEN="${ESC_SEQ}32;" FG_YELLOW="${ESC_SEQ}33;" FG_BLUE="${ESC_SEQ}34;" FG_MAGENTA="${ESC_SEQ}35;" FG_CYAN="${ESC_SEQ}36;" FG_WHITE="${ESC_SEQ}37;" FG_BR_BLACK="${ESC_SEQ}90;" FG_BR_RED="${ESC_SEQ}91;" FG_BR_GREEN="${ESC_SEQ}92;" FG_BR_YELLOW="${ESC_SEQ}93;" FG_BR_BLUE="${ESC_SEQ}94;" FG_BR_MAGENTA="${ESC_SEQ}95;" FG_BR_CYAN="${ESC_SEQ}96;" FG_BR_WHITE="${ESC_SEQ}97;" # Background colours (optional) BG_BLACK="40;" BG_RED="41;" BG_GREEN="42;" BG_YELLOW="43;" BG_BLUE="44;" BG_MAGENTA="45;" BG_CYAN="46;" BG_WHITE="47;" # Font styles FS_REG="0m" FS_BOLD="1m" FS_UL="4m"
Les couleurs BR_
sont les couleurs “lumineuses” ou “à haute intensité”. Fait de cette façon, vous pouvez même les mélanger avec d’autres styles de police. (par ex. blanc shiny souligné)
Si vous voulez mettre ce signet dans vos favoris, je l’ai fait: https://gist.github.com/ian128K/39a490e5aa8d3bb77a8b
tput
peut gérer plus que ce qui est indiqué sur la page à laquelle vous accédez. Tout tput
fait tput
est la sortie des caractères à inclure dans votre déclaration echo
, en fonction de ce qui apparaît dans la firebase database termcap / terminfo du terminal actuel. Quelques exemples:
$ tput setaf 5 | hexdump -C 00000000 1b 5b 33 35 6d |.[35m| $ tput setaf 17 | hexdump -C 00000000 1b 5b 33 38 3b 35 3b 31 37 6d |.[38;5;17m| $ tput reset | hexdump -C 00000000 1b 63 1b 5b 3f 31 30 30 30 6c 1b 5b 3f 32 35 68 |.c.[?1000l.[?25h|
Vous l’utiliserez de la même manière que vous utilisez la variable définie dans votre liste; en fait, vous pouvez l’utiliser pour créer votre idée, de manière portable:
black=$(tput setaf 0)
Fiche sans vergogne … vérifier Rainbow.sh
Usage
Importez simplement rainbow.sh et commencez à utiliser les fonctions disponibles dans vos scripts.
source rainbow.sh vargreen=$(echogreen "Grass is green") varred=$(echored "Roses are red") echo "$vargreen ..Crickets are noisy.. $varred"
Je les utilise personnellement dans mon outil xcol que j’ai développé en utilisant le code Andreas Schamanek comme référence.
#normal=$(tput sgr0) # normal text normal=$'\e[0m' # (works better sometimes) bold=$(tput bold) # make colors bold/bright red="$bold$(tput setaf 1)" # bright red text green=$(tput setaf 2) # dim green text fawn=$(tput setaf 3); beige="$fawn" # dark yellow text yellow="$bold$fawn" # bright yellow text darkblue=$(tput setaf 4) # dim blue text blue="$bold$darkblue" # bright blue text purple=$(tput setaf 5); magenta="$purple" # magenta text pink="$bold$purple" # bright magenta text darkcyan=$(tput setaf 6) # dim cyan text cyan="$bold$darkcyan" # bright cyan text gray=$(tput setaf 7) # dim white text darkgray="$bold"$(tput setaf 0) # bold black = dark gray text white="$bold$gray" # bright white text
J’utilise ces variables dans mes scripts comme ça
echo "${red}hello ${yellow}this is ${green}coloured${normal}"
Commander mon outil xcol pour des idées et des exemples
https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/