Vous pouvez transmettre la sortie à un programme qui effectue la coloration. Par exemple, il existe des programmes comme pycolor
:
pycolor module.py
Pour créer le vôtre :
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
En savoir plus sur la sortie couleur.
Pas vraiment; la couleur de la sortie d'un programme donné est contrôlée par la commande, pas par le terminal.
Cela dit, en supposant que votre terminal comprenne les codes d'échappement ANSI pour la couleur (la plupart le font), vous pouvez utiliser des codes d'échappement pour définir la couleur d'invite souhaitée au début de l'invite et la couleur de sortie souhaitée à la fin ; cela se traduirait par le fait que vos lignes de commande seraient également dans la couleur que vous avez définie pour la sortie, mais c'est probablement à peu près aussi proche que vous allez arriver à ce que vous recherchez. Par exemple, ce qui suit :
$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '
vous donnera une invite qui ressemble à :
[email protected]:wd $ _
avec 'user' et 'host' en violet, 'wd' (votre cwd) en marron (jaune foncé), et tout après le '$' dans tout ce que votre terminal utilise pour le bleu clair. (Un xterm par défaut affichera ceci en cyan ; gnome-terminal semble par défaut utiliser une jolie nuance de bleu bleuet.)
Le code de couleur réel, tel que spécifié dans le format nécessaire pour bash, est, par exemple, \[\033[00;35m\]
, où 00;35
est la spécification de couleur réelle ; le premier 00
change rarement, mais peut produire des effets IIRC gras (01), souligné (??) et vidéo inversée (??), tandis que le "35" final est la couleur réelle, qui dans ce cas est violet.
Il est étonnamment difficile de trouver une liste décente de codes de couleurs ANSI, mais les couleurs de premier plan vont de 30 à 37 et celles d'arrière-plan de 40 à 47, comme suit :
color fg bg
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
purple 35 45
cyan 36 46
gray/white 37 47
N'oubliez pas que, puisque vous définissez une couleur par défaut pour tout ce qui suit votre invite, les programmes que vous exécutez et qui ne définissent pas leurs propres couleurs via des codes d'échappement prendront cette couleur -- par exemple, si vous exécutez un pager, vous verrez probablement sa sortie dans la même couleur que celle que vous avez définie pour les autres commandes. Pendant ce temps, les commandes qui font définir leurs propres couleurs via des codes d'échappement ignorera entièrement vos efforts.
Oui, cela fonctionne pour bash, sur linux et mac OS au moins.
Tout d'abord, définissez certaines variables d'attribut et l'invite PS1 pour laisser le terminal défini avec les attributs de ligne de commande souhaités, par exemple :
bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"
Ensuite, utilisez le piège bash DEBUG, qui est exécuté juste avant chaque commande, pour modifier les attributs de texte pour la sortie de la commande :
trap 'echo -ne "${none}"' DEBUG