Toto funguje pro mě:
printf "%b" "\e[1;34mThis is a blue text.\e[0m"
Od printf(1)
:
%b ARGUMENT as a string with '\' escapes interpreted, except that octal escapes are of the form \0 or \0NNN
Spíše než pomocí archaických terminálových kódů mohu navrhnout následující alternativu. Nejen, že poskytuje čitelnější kód, ale také vám umožňuje uchovávat informace o barvě oddělené od specifikátorů formátu přesně tak, jak jste původně zamýšleli.
blue=$(tput setaf 4)
normal=$(tput sgr0)
printf "%40s\n" "${blue}This text is blue${normal}"
Další barvy naleznete v mé odpovědi ZDE
Mísíte díly dohromady místo toho, abyste je čistě oddělovali.
printf '\e[1;34m%-6s\e[m' "This is text"
V zásadě vložte pevné položky do formátu a proměnné položky do parametrů.
Toto je malý program pro získání různých barev na terminálu.
#include <stdio.h>
#define KNRM "\x1B[0m"
#define KRED "\x1B[31m"
#define KGRN "\x1B[32m"
#define KYEL "\x1B[33m"
#define KBLU "\x1B[34m"
#define KMAG "\x1B[35m"
#define KCYN "\x1B[36m"
#define KWHT "\x1B[37m"
int main()
{
printf("%sred\n", KRED);
printf("%sgreen\n", KGRN);
printf("%syellow\n", KYEL);
printf("%sblue\n", KBLU);
printf("%smagenta\n", KMAG);
printf("%scyan\n", KCYN);
printf("%swhite\n", KWHT);
printf("%snormal\n", KNRM);
return 0;
}
Jaký je rozdíl mezi použitím _exit() &exit() v konvenčním linuxovém fork-exec?
Rozdíl mezi SIGKILL SIGTERM s ohledem na procesní strom