GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation des couleurs avec printf

Cela fonctionne pour moi :

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

À partir de printf(1) :

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

Plutôt que d'utiliser des codes terminaux archaïques, puis-je suggérer l'alternative suivante. Non seulement il fournit un code plus lisible, mais il vous permet également de séparer les informations de couleur des spécificateurs de format, comme vous l'aviez initialement prévu.

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

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

Voir ma réponse ICI pour des couleurs supplémentaires


Vous mélangez les pièces ensemble au lieu de les séparer proprement.

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

En gros, mettez les éléments fixes dans le format et les éléments variables dans les paramètres.


Ceci est un petit programme pour obtenir différentes couleurs sur le terminal.

#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. Utiliser Sed avec des caractères spéciaux ?

  2. Utiliser Word Wrap avec Mc ?

  3. Utiliser –exclude avec la commande Du ?

  4. Connectez-vous à un serveur cloud avec Filezilla en utilisant SFTP

  5. Utilisation de sed pour diviser une chaîne avec un délimiteur

Utilisation de la commande Cat sous Linux avec des exemples

Bash Scripting - Commande Printf expliquée avec des exemples

Comment rechercher LDAP à l'aide de ldapsearch (avec exemples)

Planifier des travaux sous Linux avec la commande 'at'

Bash - Comment imprimer des chaînes multi-lignes (avec '\ n') à l'aide de printf

Comment remplir un fichier avec FF en utilisant dd ?