Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using colors with printf

When written like this, it outputs text in blue:

printf "\e[1;34mThis is a blue text.\e[0m" 

But I want to have format defined in printf:

printf '%-6s' "This is text" 

Now I have tried several options how to add color, with no success:

printf '%-6s' "\e[1;34mThis is text\e[0m" 

I even tried to add attribute code to format with no success. This does not work and I can't find anywhere an example, where colors are added to printf, which has defined format as in my case.

like image 425
Jernej Jerin Avatar asked Mar 23 '11 23:03

Jernej Jerin


1 Answers

Rather than using archaic terminal codes, may I suggest the following alternative. Not only does it provide more readable code, but it also allows you to keep the color information separate from the format specifiers just as you originally intended.

blue=$(tput setaf 4) normal=$(tput sgr0)  printf "%40s\n" "${blue}This text is blue${normal}" 

See my answer HERE for additional colors

like image 128
SiegeX Avatar answered Oct 06 '22 19:10

SiegeX