Je passe la plupart 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 écueils 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 boguées, etc.
Voici quelques conseils tirés 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 un certain nombre d'hôtes différents, différentes versions de système d'exploitation, etc. J'utilise tout, de macOS X, Ubuntu Linux, RHEL/CentOS/Scientific Linux et FreeBSD. J'essaie de garder les choses simples et génériques, si possible.
- Je fais beaucoup de travail en utilisant GNU
screen
, ce qui ajoute une autre couche de plaisir. - De nombreux systèmes d'exploitation définissent des éléments tels que
dircolors
et par défaut, et je ne veux pas modifier cela sur une centaine d'hôtes différents. J'essaie donc de m'en tenir aux valeurs par défaut. Au lieu de cela, je modifie la configuration des couleurs de mon terminal. -
Utiliser la couleur pour certaines commandes Unix (
ls
,grep
,less
,vim
) et l'invite 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 posterai mon .bashrc
et répondez à ma propre question Jeopardy Style.
Réponse acceptée :
Voici quelques actions que vous pouvez effectuer :
Éditeurs + Code
De nombreux éditeurs prennent en charge la coloration syntaxique. vim
et emacs
l'avoir par défaut. Vous pouvez également l'activer sous nano
.
Vous pouvez également mettre en surbrillance le code de syntaxe 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 utiliser export GREP_OPTIONS='--color=auto'
pour le rendre persistant sans alias. Si vous utilisez --color=always
, il utilisera de la couleur même en passepoil, ce qui confond les choses.
ls
ls --color=always
Couleurs spécifiées par :
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(indice :dircolors
peut être utile)
PS1
Vous pouvez configurer votre PS1 (invite du shell) pour utiliser des couleurs. Par exemple :
PS1='e[33;[email protected]: e[31mWe[0m$ '
Produira une PS1 comme :
[jaune][e-mail protégé] :[rouge]~[normal]$
Vous pouvez devenir vraiment créatif avec cela. En guise d'idée :
PS1='e[se[0;0He[1;33mh tne[1;32mThis is my computere[u[[email protected]: w]$ '
Place une barre en haut de votre terminal avec des informations aléatoires. (Pour de meilleurs résultats, utilisez également alias clear="echo -e 'e[2Jnn'"
.)
Se débarrasser des séquences d'échappement
Connexes :Résolution d'écran non répertoriée ?
Si quelque chose bloque la sortie de couleur lorsque vous ne le souhaitez pas, j'utilise ce sed
ligne pour supprimer les séquences d'échappement :
sed "s/[^[[0-9;]*[a-zA-Z]//gi"
Si vous souhaitez une expérience plus authentique, vous pouvez également vous débarrasser des lignes commençant par e[8m
, qui demande au terminal de masquer le texte. (Pas largement pris en charge.)
sed "s/^[^[8m.*$//gi"
Notez également que ces ^[s doivent être des ^[s réels et littéraux. Vous pouvez les saisir en appuyant sur ^V^[ dans bash, c'est-à-dire Ctrl + V , Ctrl + [ .