GNU/Linux >> Linux Esercitazione >  >> Linux

Usare i colori con printf

Questo funziona per me:

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

Da printf(1) :

%b     ARGUMENT as a string with '\' escapes interpreted, except that octal
       escapes are of the form \0 or \0NNN

Piuttosto che usare codici terminali arcaici, posso suggerire la seguente alternativa. Non solo fornisce un codice più leggibile, ma ti consente anche di mantenere le informazioni sul colore separate dagli identificatori di formato proprio come avevi originariamente previsto.

blue=$(tput setaf 4)
normal=$(tput sgr0)

printf "%40s\n" "${blue}This text is blue${normal}"

Vedi la mia risposta QUI per altri colori


Stai mescolando le parti insieme invece di separarle in modo netto.

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

Fondamentalmente, metti le cose fisse nel formato e quelle variabili nei parametri.


Questo è un piccolo programma per ottenere colori diversi sul terminale.

#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. Utilizzo di modificatori di parole con la cronologia di Bash in Linux

  2. Utilizzo di più modelli contemporaneamente con il comando Sed

  3. Errore nell'utilizzo di GRANT con IDENTIFIED by password in MySQL

  4. Utilizzando Notifica-Invia con Cron?

  5. Usare Sed con personaggi speciali?

Utilizzo di Cat Command in Linux con esempi

Scripting Bash – Spiegazione del comando Printf con esempi

Come cercare LDAP usando ldapsearch (con esempi)

Usare l'a capo automatico con Mc?

Pianifica i lavori in Linux con il comando 'at'

Bash - Come stampare stringhe multilinea (con '\n') usando printf