I am looking for a definitive way to build shell scripts that generates colored output.
Unfortunately I am having a hard time finding an appropriate lib or good technique for doing this. I found a lot of helpful but simple examples like this. Also the most comprehensive guide that I found until now is this one.
Before I start writing my own library, I want to check if anyone already wrote it
If your solution does not fit into the observations below thats not a problem. I would like also to read it so it can help me out if decide to write my own solution
My main concerns/observations:
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
After some research on terminal control and output formatting, I am writing this gist that tries to accomplish this. So far it is doing quite well
A script can use escape sequences to produce colored text on the terminal. Colors for text are represented by color codes, including, reset = 0, black = 30, red = 31, green = 32, yellow = 33, blue = 34, magenta = 35, cyan = 36, and white = 37.
import os # System call os. system("") # Class of different styles class style(): BLACK = '\033[30m' RED = '\033[31m' GREEN = '\033[32m' YELLOW = '\033[33m' BLUE = '\033[34m' MAGENTA = '\033[35m' CYAN = '\033[36m' WHITE = '\033[37m' UNDERLINE = '\033[4m' RESET = '\033[0m' print(style.
$() – the command substitution. ${} – the parameter substitution/variable expansion.
Here is an modified snippet from my dotfiles that should do what you want
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';
Then you can just echo -e "${Blu}blue ${Red}red ${RCol}etc...."
echo -e "\033[33;31m Color Text" - red
echo -e "\033[33;32m Color Text" - green
echo -e "\033[33;33m Color Text" - yellow
echo -e "\033[33;34m Color Text" - blue
echo -e "\033[33;35m Color Text" - Magenta
echo -e "\033[33;30m Color Text" - Gray
echo -e "\033[33;36m Color Text" - Cyan
http://techietent.blogspot.in/2013/03/how-to-echo-colored-text-in-linux-shell.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With