Je passe le plus clair de mon temps à travailler dans des environnements Unix et à utiliser des émulateurs de terminaux. J'essaie d'utiliser la couleur sur la ligne de commande, car la couleur rend la sortie plus utile et intuitive.
Quelles options existent pour ajouter de la couleur à mon environnement de terminal? Quelles astuces utilisez-vous? Quels pièges avez-vous rencontrés?
Malheureusement, la prise en charge de la couleur varie en fonction du type de terminal, du système d'exploitation, du paramètre TERM, de l'utilitaire, des implémentations erronées, etc.
Voici quelques conseils de ma configuration, après de nombreuses expérimentations:
- J'ai tendance à définir
TERM=xterm-color
, qui est pris en charge sur la plupart des hôtes (mais pas tous). - Je travaille sur différents hôtes, différentes versions de systèmes d'exploitation, etc. J'utilise tout, de MacOS X à Ubuntu, RHEL / CentOS / Scientific Linux et FreeBSD. J'essaie de garder les choses simples et génériques, si possible.
- Je fais un tas de travail avec GNU
screen
, ce qui ajoute une couche de plaisir supplémentaire. - De nombreux systèmes d'exploitation définissent des paramètres tels que
dircolors
et par défaut, et je ne veux pas modifier cela sur cent hôtes différents. J'essaie donc de rester avec les valeurs par défaut. Au lieu de cela, je modifie la configuration de la couleur de mon terminal. Utilisez la couleur pour certains commandes Unix (
ls
,grep
,less
,vim
) et l' invite de Bash . Ces commandes semblent utiliser les " séquences d'échappement ANSI " standard . Par exemple:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
Je vais poster mon .bashrc
et répondre à ma propre question Jeopardy Style.
column -t --color
?Réponses:
Voici deux choses que vous pouvez faire:
Editeurs + Code
De nombreux éditeurs ont un support de mise en évidence de la syntaxe.
vim
et l'emacs
avoir sur par défaut. Vous pouvez également l' activer sousnano
.Vous pouvez également mettre en évidence la syntaxe du code sur le terminal en utilisant Pygments comme outil de ligne de commande.
grep
grep --color=auto
met en évidence tous les matchs. Vous pouvez également utiliserexport GREP_OPTIONS='--color=auto'
pour le rendre persistant sans un alias. Si vous utilisez--color=always
, il utilisera la couleur même lorsque la tuyauterie , ce qui confond les choses.ls
ls --color=always
Couleurs spécifiées par:
(indice:
dircolors
peut être utile)PS1
Vous pouvez configurer votre PS1 (invite du shell) pour utiliser des couleurs. Par exemple:
Produira une PS1 comme:
[yellow] lucas @ ubuntu: [rouge] ~ [normal] $
Vous pouvez être vraiment créatif avec ça. En tant qu'idée:
Met une barre en haut de votre terminal avec des informations aléatoires. (Pour de meilleurs résultats, utilisez également
alias clear="echo -e '\e[2J\n\n'"
.)Se débarrasser des séquences d'échappement
Si quelque chose est bloqué en sortie de couleur quand vous ne le voulez pas, j'utilise cette
sed
ligne pour effacer les séquences d'échappement:Si vous voulez une expérience plus authentique, vous pouvez également supprimer les lignes commençant par
\e[8m
, qui indique au terminal de masquer le texte. (Pas largement pris en charge.)Notez également que ces ^ [s doivent être réels, littéraux ^ [s. Vous pouvez les saisir en appuyant sur ^ V ^ [en bash, c'est-à-dire Ctrl+ V, Ctrl+ [.
la source
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
. Il y a un x superflu après la quatrième barre oblique inverse.\[...\]
ou bien les commandes de la deuxième ligne écraseront la première ligne. PS1 = '[\ e [33; 1m] \ u @ \ h: [\ e [31m] \ W \ e [0m \ $'ls --color=always
ne fonctionne pas. L 'approche de Michael Durrant est meilleure pour cela:ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
J'utilise aussi:
Et si vous aimez coloriser votre invite, des couleurs définies peuvent être utiles:
Et puis mon invite est quelque chose comme ça:
$ (vcprompt) appelle un script python dans mon ~ / sbin qui affiche des informations de contrôle de version concernant le chemin actuel. Cela inclut le support pour Mercurial, Git, Svn, Cvs, etc. L’auteur du script a la source ici .
Voici la source complète de ma configuration d'invite:
la source
$LSCOLORS
et$CLICOLOR
sont pour BSD ls. GNU ls (Linux) utilise$LS_COLORS
une syntaxe différente. Comme GNU me semble être chez moi,LSCOLORS=exgxfxDacxBaBaCaCaeaEa
j’imite les couleurs de GNU sous BSD.grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
.bashrc
fichier pour que la modification soit effective. Vous pouvez le faire avec la commande suivante.source /path/to/.bashrc
grep
etls
ont déjà été mentionné, si vous voulez beaucoup plus de couleurs consultez générique coloriser , son but initial était de coloriser logfiles, mais dès la sortie de la boîte , il colorise aussiping
,traceroute
,gcc
,make
,netstat
,diff
,last
,ldap
etcvs
.Il est facilement étendu si vous connaissez les regex. J'ai ajouté
ps
etnmap
à la liste (si vous entrez dans cet article,grc
je serai ravi de partager les fichiers .conf de ces deux outils)(Btw, pour l'installer via
synaptic
,pacman
et vous aurez peut-être plus de chance en recherchant "grc")la source
grc
prend désormais en chargeps
par défaut. Je serais intéressé par tesnmap
coloriages. Voir aussi ma réponse pour les aliaser de manière à absorber les nouvelles commandes lors de la mise à niveau de grc.J'ai perfectionné mon .bashrc au fil des ans pour travailler à la fois sur OSX et Ubuntu.
J'ai également réduit sa taille à 28 lignes avec des instructions de condition compactes.
Avec cela, mon invite PS1 ressemble à:
avec l'heure en rouge, le nom d'utilisateur en vert, le nom de la machine en bleu clair, le pwd en bleu plus foncé et la branche git en jaune.
Fonctionnalité de mon invite PS1:
_
entre alors (c'est lapwd sed
partie de LOCATION).Les lignes pertinentes de mon
.bashrc
dossier sont:Pour ls avec des couleurs lorsqu'elles sont disponibles et sans erreur si ce n'est pas le cas (c.-à-d. OSX):
la source
ls
sur OS X, mais cela se fait en utilisantexport CLICOLOR=1
.ls
MacOS 10. La réponse est également erronée en ce sens que les chaînes d'invite sont en fait défectueuses. Ils ne sont pas équilibrer correctement\[
et\]
, et ont causé des problèmes au moins une personne copie de cette réponse .Couleurs pour les pages de manuel ( plus de détail ):
Couleurs pour grep (
1;32
vert vif, voir les autres articles ici pour d’autres couleurs):Plus de couleurs pour GNU ls :
Installez
grc
( Generic Colouriser ) et ajoutez-le à vos alias:Couleurs pour diff : trop de contenu pour une fonction, utilisez un script et aliastez-le dans votre fichier rc (inutile si vous l'avez installé
grc
):Couleurs pour l' invite bash :
la source
PSWD()
fonction était autrefois compatible POSIX, mais elle est tellement plus simple à utiliser avec la gestion de la sous-chaîne bash / zsh. Voir la révision 6 pour la version POSIX, qui comporte de nombreux points d'interrogation et qui n'était pas du tout adaptable à la largeur du terminal. Je n'ai pas mis à jour la capture d'écran, mais ce n'est qu'un léger changement à la largeur de 80 caractères.CLICOLOR=1
ne fonctionne pas pour moi avec FREEBSD 11.2CLICOLOR=1 ls
devrait faire la même chose que d’ls -G
utiliser BSD (ls -g
sur des BSD plus anciens). Si celals --color
fonctionne (pas d'erreur), vous utilisez lals
commande de GNU et$CLICOLOR
est ignoré.~/.bashrc
pour que les modifications prennent effet. Exécutezsource ~/.bashrc
ou démarrez une nouvelle session bash (lancez un terminal ou exécutez-labash
).Définir une invite en gras / coloré. De cyberciti.biz et le BashFAQ
J'ai également réussi à trouver des paramètres de couleur largement pris en charge, qui n'impriment pas les caractères gobbledygook dans les environnements plus anciens (même FreeBSD4!), Et semblent fonctionner correctement si TERM = vt100, xterm, xterm-color. (Pour la plupart). De mon .bashrc:
la source
Il existe un bon outil pour configurer vos couleurs pour la commande ls - http://geoff.greer.fm/lscolors/
la source
Des choses qui n'ont pas déjà été dites ici:
Pour coloriser la sortie de vos compilations avec gcc, il y a colorgcc de Johannes Schlüter
Pour colorier les logs, il y a multitail
Pour colorier une sortie, je mets xcol
Personnellement, je les utilise depuis l’outil xcol.
J'utilise ces variables dans mes scripts comme si
J'aime aussi cette petite fonction coloredEcho (trouvée sur Stack Overflow)
Désolé, pas autorisé à poster plus de liens
la source
Je vous suggère de regarder ZSH et son plugin oh-my-zsh, qui possède l'une des fonctionnalités de console les plus puissantes que j'ai vues. L'un d'eux est de choisir un thème pour votre terminal. C’est un exemple de mon thème ... Dans les couleurs, les couleurs ne sont pas aussi chaudes mais elles sont identiques à celles de cette image ... De toute façon, vous allez adorer!
la source
emulate bash
votre. des dossiers. Toute personne utilisant les fonctionnalités avancées de BASH doit se méfier de nombreuses subtilités. BASH est un meilleur sh.=~
opérateur peut vous mordre, la façon dont ZSH gère les tableaux peut vous mordre, etc. Après avoir utilisé ZSH / Oh-My-ZSH pendant environ 9 mois, j'en ai assez. J'utilisais un thème personnalisé que j'ai écrit moi-même, je l'ai porté sur BASH et écrit ma propre ligne de commande git et je n'ai jamais regardé en arrière. Maintenant, je ne m'inquiète plus de la portabilitéPour visualiser les sorties en couleur, utilisez colordiff .
Pipe n'importe quelle sortie de format diff dans colordiff:
Cela inclut certains des formats de substitution de diff, comme
-y
(côte à côte).Alternativement, si elle est appelée autonome (sans rien de particulier), elle agit comme une enveloppe autour de 'diff' et colore le résultat. C'est pourquoi j'ai ceci dans mon .bashrc, alias 'diff' pour colordiff.
la source
.bashrc
exemple manque la finalefi
et pourrait être converti en une commande d'une seule ligne:type colordiff &> /dev/null && alias diff='colordiff'
Certaines décorations de texte (en gras) permettent de différencier facilement les coques sans racine. Pour Zsh:
Pour Bash:
la source
bash
.Je me demandais simplement la même chose. J'ai ma propre approche, mais je cherche des alternatives.
J'écris des wrappers bash autour des appels de programme et transmets leur sortie
sed
. Ce que j’aime,sed
c’est que cela modifie et renvoie immédiatement chaque ligne => pas beaucoup de mise en mémoire tampon. Cependant, je n'aime pas que pour chaque appel à un programme intégré, lesed
code soit analysé et compilé.Par exemple, voici ce que je fais pour colorer la sortie de
ip
:la source
Pour définir l'invite, j'ai cela dans mon fichier .bashrc.
Cela me donne une invite qui ressemble à ceci:
Le répertoire de travail est en vert. Et le nom d'utilisateur est en gras et cyan sauf si j'ai exécuté le shell avec
sudo
. Dans ce cas, le nom d'utilisateur ("racine") est affiché en gras et en rouge.Personnellement, j’aime vraiment beaucoup que les caractères de contrôle de formatage soient stockés dans des variables, car cela facilite la lecture du code permettant de définir l’invite. Il fait également l' édition de l'invite beaucoup plus facile.
La raison pour laquelle j’utilise,
tput
c’est qu’elle est supposée être plus universellement prise en charge que les033[01;31m\]
séquences étranges . En outre, en prime, si vous le faitesecho $PS1
à l'invite, vous verrez l'invite brute avec des couleurs au lieu de ces séquences de contrôle inintelligibles.la source
Vous pouvez aussi essayer un projet qui aide à colorier les scripts, son scriptEchoColor à la source: http://scriptechocolor.sourceforge.net/
ex.:
Les couleurs automatiques sont configurables.
Ceci est un exemple fait avec elle:
la source
' Colout ' est un excellent outil Python à usage général pour colorer la sortie des commandes .
Vous lui donnez une expression régulière avec N groupes, suivie d'une liste de N couleurs séparées par des virgules. Tout texte correspondant à un groupe sera affiché dans la couleur correspondante.
Donc, par exemple, si vous regardez une sortie de test:
Ensuite, vous pouvez le personnaliser avec:
Voyez comment ma regex a trois groupes (la parenthèse) suivis de trois couleurs (et éventuellement de trois styles, mais j'ai utilisé un raccourci pour définir toutes les couleurs sur "gras", donc le groupe "noir", qui correspond au texte entre crochets. , sort en gris foncé.)
Notez aussi comment j'ai dû ajouter
2>&1
à la fin de l'invocation Python, parce que la sortie de unittest est sur stderr, je l'ai donc transférée sur stdout afin de pouvoir la diriger vers colout.C’est généralement si facile à utiliser que je me retrouve souvent à créer de nouvelles invocations de colout à la volée et à les réutiliser ou les modifier à partir de mon historique de ligne de commande.
Le seul inconvénient est qu’il s’agit d’un package Python, et non d’un exécutable autonome. Vous devez donc l’installer à l’aide de pip, ou
sudo python setup.py install
.la source
Je trouve que Solarized est utile. C'est un projet soigné avec des couleurs uniformes pour de nombreuses applications.
http://ethanschoonover.com/solarized https://github.com/altercation/solarized
la source
J'utilise un wrapper de couleur .
Il est presque transparent, mais une fois, j’ai trouvé que ps dans un shell interactif renvoie un résultat différent en comparant ps dans un tube.
la source
Pour Mac, vous pouvez utiliser ce qui suit comme spécifié ici
la source
si vous voulez rendre votre
vim
couleur juste comme moi, je vous suggère de suivre deux étapes:la source
Si bash est votre choix, je recommande oh-my-bash . Si zsh est votre choix, je recommande oh-my-zsh . Les deux prennent en charge la colorisation de votre terminal et une sortie différente.
la source
Je voudrais annoncer humblement ma récente publication de
ta
ou textattr , une bibliothèque et un outil de ligne de commande qui vise à faire ajouter de la couleur et les attributs pour embellir la borne de sortie de votre programme plus facile en traduisant les spécifications lisibles par l' homme dans les codes d'échappement ANSI.Par exemple:
echo "The Git repo $(ta yellow)${CUR_REPO}$(ta off) is $(ta green)up-to-date$(ta off)"
ou encore plus court:
echo "The Git repo $(ta y)${CUR_REPO}$(ta f) is $(ta g)up-to-date$(ta f)"
ou un remplaçant:
tawrite "The Git repo " @y ${CUR_REPO} @f " is " @g up-to-date @f "\n"
vous donnera quelque chose comme:
Actuellement, cette bibliothèque est utilisable à partir de quatre langages C, C ++, D et Python, à l’exception de l’utilisation en ligne de commande de votre shell préféré.
Notez que cela ne colore pas automatiquement la sortie des autres programmes. C'est plutôt un utilitaire pour vous aider à ne pas avoir à vous souvenir des codes abstrus. Vous devez uniquement utiliser les noms de couleurs évidents ou leurs abréviations rgb cmyk w (hite) (of) f faciles à retenir .
Pour plus de détails, visitez le repo textattr .
la source