GNU/Linux >> Znalost Linux >  >> Linux

Použití barev s printf

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;
}

Linux
  1. Použití slovních modifikátorů s historií Bash v Linuxu

  2. Použití více vzorů najednou pomocí příkazu Sed

  3. Chyba při použití GRANT s IDENTIFIKOVANÝM heslem v MySQL

  1. Používáte Notify-Send s Cronem?

  2. Používáte Sed se speciálními znaky?

  3. Používáte zalamování slov s Mc?

  1. Použití –exclude With The Du Command?

  2. Připojte se ke cloudovému serveru pomocí Filezilla pomocí SFTP

  3. Barvy s unixovými příkazovými hodinkami?