16 votes

Couleur différente pour la commande et la sortie

Je me demandais s'il est possible de changer la couleur de la sortie d'une commande sous Linux pour une couleur différente de celle de la ligne de commande où je tape. C'est un peu monotone et difficile de repérer où commence la sortie. Par exemple,

@USER/Destop$ ----> bleu
/*
--------------
fichier de sortie en blanc
-----------
*/

Merci

7voto

Nick T Points 38411

Vous pouvez passer la sortie à un programme qui fait la coloration. Par exemple, il existe des programmes comme pycolor:

pycolor module.py

Pour créer le vôtre:

rouge="$(tput setaf 1)"
réinitialiser="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$rouge\1$réinitialiser/"

Plus sur la sortie en couleur.

6voto

Aaron Miller Points 9509

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 comprend les codes d'échappement ANSI pour la couleur (la plupart le font), vous pourriez utiliser des codes d'échappement pour définir la couleur de l'invite désirée au début de l'invite, et la couleur de sortie désirée à la fin; cela ferait en sorte que vos lignes de commande soient également dans la couleur que vous avez définie pour la sortie, mais c'est probablement aussi proche que vous allez obtenir de ce que vous cherchez. 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 à:

utilisateur@hôte:wd $ _

avec 'utilisateur' et 'hôte' en violet, 'wd' (votre répertoire de travail) en brun (jaune foncé), et tout après '$ ' dans ce que votre terminal utilise comme bleu clair. (Un terminal par défaut xterm rendra ceci en cyan; gnome-terminal semble utiliser par défaut une nuance plutôt agréable de bleu outremer.)

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 '00' en tête change rarement, mais peut produire si je me souviens bien des effets gras (01), souligné (??), et inverser la vidéo (??), tandis que le '35' à la fin est la couleur réelle, qui dans ce cas est violet.

Il est étonnamment difficile de trouver une liste décente de codes de couleur ANSI, mais les couleurs de premier plan vont de 30 à 37, et les couleurs d'arrière-plan de 40 à 47, comme suit:

couleur       fg  bg
noir          30  40
rouge         31  41
vert          32  42
jaune         33  43
bleu          34  44
violet        35  45
cyan          36  46
gris/blanc    37  47

Gardez à l'esprit que, puisque vous définissez une couleur par défaut pour tout ce qui suit votre invite, les programmes que vous exécutez qui ne définissent pas leurs propres couleurs via des codes d'échappement prendront cette couleur -- par exemple, si vous exécutez un paginateur, vous verrez probablement sa sortie dans la même couleur que celle que vous avez définie pour les autres commandes. En attendant, les commandes qui définissent leurs propres couleurs via des codes d'échappement ignoreront complètement vos efforts.

3voto

gmhk Points 4151

Oui, j'ai cela qui fonctionne pour bash, sur Linux et Mac OS au moins.

Tout d'abord, définissez quelques variables d'attributs et le prompt PS1 pour laisser le terminal avec les attributs de ligne de commande désirés, par exemple :

bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"

Ensuite, utilisez le piège DEBUG de bash, qui s'exécute juste avant chaque commande, pour changer les attributs de texte pour la sortie de la commande :

trap 'echo -ne "${none}"' DEBUG

1voto

Eigir Points 471

Une autre alternative (commande par commande) est grc - coloriseur générique. Il faut un peu de travail pour configurer les expressions régulières qu'il utilise pour colorier les choses. J'ai découvert cela ici:

https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

et ici:

https://unix.stackexchange.com/questions/26313/colored-find-output

Je ne suis pas un expert en regex, donc je n'ai pas beaucoup travaillé avec ces commandes.

1voto

Yokai Points 289

Jetez-les dans votre fichier .bashrc et ensuite sourcez le fichier après avoir enregistré.

blk=$'\x1b[90m' # Définit le texte en noir
red=$'\x1b[31m' # Définit le texte en rouge
grn=$'\x1b[92m' # Définit le texte en vert
ylw=$'\x1b[93m' # Définit le texte en jaune
blu=$'\x1b[94m' # Définit le texte en bleu
pur=$'\x1b[95m' # Définit le texte en violet
cyn=$'\x1b[96m' # Définit le texte en cyan
wht=$'\x1b[97m' # Définit le texte en blanc
rst=$'\x1b[0m'  # réinitialise la couleur par défaut du terminal

Une fois cela fait, vous pouvez ensuite utiliser n'importe lequel dans votre terminal de façon permanente ou jusqu'à ce que vous commentiez les variables ou les supprimiez complètement. Vous pouvez les utiliser dans des scripts sur votre machine ou avec une substitution de commande ou autre. Voici un exemple de la façon dont je les utilise personnellement :

echo -e "${red}Ce texte est rouge.${rst}"
printf "${grn}Ce texte est vert.\n${rst}"

Je les utilise généralement avec des commandes echo et/ou printf individuelles, mais vous pouvez les utiliser pour coloriser d'autres commandes ainsi que la commande ping. Ajoutez ce qui suit à votre .bashrc pour obtenir les effets. Ensuite, sourcez votre fichier .bashrc et exécutez la commande cping pour utiliser ping avec du texte violet. Vous pouvez définir chaque fonction de commande pour utiliser n'importe quelle couleur que votre terminal prend en charge.

# Ajoutez ceci à votre fichier .bashrc
colored_ping() {

    echo -e "${pur}$(ping $1)${rst}"
}

alias cping='colored_ping'

Ensuite, essayez :

user@linux:~# cping superuser.com

Votre sortie pour cping sera en violet. Si vous voulez utiliser plusieurs couleurs dans la même sortie, vous pouvez les ajouter de manière unique. Comment vous le faites dépend entièrement de vous. Par exemple :

echo -e "${red}Ceci est rouge et ${blu}cela est bleu et ${grn}cela est vert.${rst}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X