Est-ce que quelque chose comme ça existe dans Unix?
$ echo "this should show in red" | red $ echo "this should show in green" | green $ echo "this should show in blue" | blue
Ici, je ne veux pas dire pour le text de code de couleur littérale à venir (être collé dans un file, par exemple). Je veux juste dire que le text apparaîtra dans le terminal sous cette couleur. Est-ce possible?
Voici un petit script qui fait exactement cela. Sauvegardez ceci en tant que color
dans un directory de votre $PATH
(par exemple, ~/bin
si c'est dans votre $PATH
):
#!/usr/bin/env perl use ssortingct; use warnings; use Term::ANSIColor; my $color=shift; while (<>) { print color("$color").$_.color("reset"); }
Ensuite, passez votre text à travers le script, en donnant .
comme model à assortir et en spécifiant une couleur:
Les colors sockets en charge dépendent des capacités de votre terminal. Pour plus de détails, voir la documentation du packageage Term::ANSIColor
.
Vous utiliseriez tput
pour cela:
tput setaf 1 echo This is red tput sgr0 echo This is back to normal
Cela peut être utilisé pour build un tuyau:
red() { tput setaf 1; cat; tput sgr0; } echo This is red | red
Les colors de base sont respectivement le noir (0), le rouge (1), le vert, le jaune, le bleu, le magenta, le cyan et le blanc (7). Vous findez tous les détails dans la page de terminfo(5)
.
Avec zsh
:
autoload colors; colors for color (${(k)fg}) eval "$color() {print -n \$fg[$color]; cat; print -n \$reset_color}"
Et alors:
$ echo "while" | blue while