Pour coloriser la sortie de texte d'une commande, vous pouvez essayer de rediriger la sortie de la commande vers sed, comme suit :
votrecommande | sed -e 's/FAIL/^[[01;31mFAIL^[[00m/g' -e 's/SUCCESS/^[[01;32mSUCCESS^[[00m/g'
On pourrait également placer ces règles de substitution dans un fichier texte (par exemple colorize.sed) et utiliser ce qui suit :
votrecommande | sed -f coloriser.sed
Cela permettra d'attribuer différentes couleurs à différentes chaînes de correspondance. Notez que dans mes exemples, le '^[' signifie le caractère d'échappement, pas un carat suivi d'un crochet. Le caractère d'échappement peut être entré dans la règle en tapant Ctrl-V puis en appuyant sur la touche d'échappement.
Les couleurs/effets disponibles pour ces codes tty sont les suivants :
Couleurs de premier plan :Noir=30, Bleu=34, Cyan=36, Vert=32, Violet=35, Rouge=31, Blanc=37, Jaune=33
Couleurs de fond :Noir=40, Bleu=44, Cyan=46, Vert=42, Violet=45, Rouge=41, Blanc=47, Jaune=43
Effets :Normal=00, Gras=01, Dim=02, Souligné=04, Clignotant=05, Inversé=07, Masqué=08
Ceux-ci peuvent également être combinés avec un point-virgule comme je l'ai fait (c'est-à-dire 01;31 pour obtenir du rouge gras).
Notez que le code '^[00m' est requis pour désactiver la couleur/l'effet précédent, sinon la couleur/l'effet persistera après la chaîne de correspondance. Notez également que certains effets ne fonctionnent pas (ou ne fonctionnent pas comme je l'ai décrit) avec certains émulateurs de terminaux.
J'espère que je ne fais pas que répéter ce que quelqu'un d'autre a déjà dit, car je n'ai pas lu tout le fil de discussion.
Il est probablement plus facile de colorier les mots vous-même, plutôt que de demander au terminal de les colorier pour vous. Si vous ne pouvez pas modifier les scripts qui créent la sortie, pouvez-vous les filtrer à travers autre chose ?
À l'extrémité la plus susceptible d'être disponible, vous pouvez diriger votre sortie vers grep
:
tail -F logfile | grep --color -P "FAIL|"
Cela correspond à "FAIL" ou "", et met en surbrillance la partie correspondante de la chaîne.
Vous pouvez également utiliser quelque chose de plus spécialisé, comme décrit dans cet article de blog, par exemple.