Je passe la plupart de mon temps à travailler dans des environnements Unix et à utiliser des émulateurs de terminal. 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 sont les astuces que vous utilisez ? Quels sont les pièges que vous avez rencontrés ?
Malheureusement, la prise en charge de la couleur varie selon le type de terminal, le système d'exploitation, le paramètre TERM, l'utilitaire, les implémentations boguées, etc.
Voici quelques conseils tirés de mon installation, après de nombreuses expérimentations :
J'ai tendance à mettre TERM=xterm-color
, qui est supporté par la plupart des hôtes (mais pas tous).
Je travaille sur un certain nombre d'hôtes différents, de versions d'OS différentes, etc. J'utilise tout : 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 un tas de travail en utilisant GNU screen
, ce qui ajoute une autre couche de plaisir.
Beaucoup de systèmes d’exploitation définissent des choses comme 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. A la place, je modifie la configuration des couleurs de mon terminal.
Utilisez la couleur pour certaines [commandes Unix][debian] (ls
, grep
, less
, vim
) et l'[invite Bash][PS1]. Ces commandes semblent utiliser les " ;[séquences d'échappement ANSI][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 façon Jeopardy.
[ANSI] : http://en.wikipedia.org/wiki/ANSI_escape_code [debian] : http://www.debian.org/doc/manuals/reference/ch09.en.html#_colorized_commands [PS1] : http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
Voici deux ou trois choses que vous pouvez faire :
Éditeurs + Code
Beaucoup d'éditeurs ont un support pour la coloration syntaxique. vim
et emacs
l'ont activé par défaut. Vous pouvez également [l'activer sous nano
] (https://askubuntu.com/questions/90013/how-do-i-enable-syntax-highlighting-in-nano).
Vous pouvez également utiliser la coloration syntaxique du code sur le terminal en utilisant Pygments comme outil de ligne de commande.
grep
grep --color=auto
met en évidence toutes les correspondances. Vous pouvez aussi utiliser export GREP_OPTIONS='--color=auto'
pour le rendre persistant sans alias. Si vous utilisez --color=always
, il [utilisera la couleur même en cas de piping][1], ce qui rend les choses confuses.
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'
(astuce : dircolors
peut être utile)
PS1 Vous pouvez configurer votre PS1 (invite du shell) pour utiliser des couleurs. Par exemple :
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '
produira un PS1 comme :
[yellow]lucas@ubuntu : [red]~[normal]$
Vous pouvez être très créatif avec cela. En guise d'idée :
PS1='\e[s\e[0;0H\e[1;33m\h \t\n\e[1;32mThis is my computer\e[u[\u@\h: \w]\$ '
Affiche 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 coincé en sortie de couleur alors que vous ne le voulez pas, j'utilise cette ligne sed
pour enlever les séquences d'échappement :
sed "s/\[^[[0-9;]*[a-zA-Z]//gi"
Si vous voulez une expérience plus authentique, vous pouvez aussi vous débarrasser des lignes commençant par \e[8m
, qui demande au terminal de cacher le texte. (Non largement supporté.)
sed "s/^\[^[8m.*$//gi"
Notez également que ces ^[s doivent être des ^[s réels, littéraux. Vous pouvez les taper en appuyant sur ^V^[ en bash, c'est-à-dire Ctrl + V, Ctrl + [.
[1] : http://linuxcommando.blogspot.com/2007/10/grep-with-color-output.html
grep
et ls
ont déjà été mentionnés, si vous voulez beaucoup plus de couleurs, jetez un coup d'oeil à [Generic Coloriser][1], son but initial était de colorer les fichiers journaux, mais dès le départ, il colore aussi ping
, traceroute
, gcc
, make
, netstat
, diff
, last
, ldap
, et cvs
.
Il est facile de l'étendre si vous connaissez les regex. J'ai ajouté ps
et nmap
à la liste (si vous utilisez grc
, je serai plus qu'heureux de partager les fichiers .conf de ces deux outils).
(En fait, pour l'installer via synaptic
, pacman
, et autres, vous aurez peut-être plus de chance en cherchant "grc" ;)
[1] : http://korpus.juls.savba.sk/~garabik/software/grc.html
Définir une invite en gras/couleur. Extrait de [cyberciti.biz][1] et de [BashFAQ][2].
[1] : http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ [2] : http://mywiki.wooledge.org/BashFAQ/037
# 'tput bold' will work regardless of the foreground and background colors.
# Place the tput output into variables, so they are only execd once.
bold=$(tput bold) # This could also be a color.
reset=$(tput sgr0)
export PS1="\u@\[$bold\]\h\[$reset\]:\w \$ "
J'ai également réussi à trouver des paramètres de couleur qui sont largement supportés, et qui n'impriment pas de caractères charabia dans les environnements plus anciens (même FreeBSD4 !), et semble fonctionner correctement si TERM=vt100, xterm, xterm-color. (pour la plupart). De mon .bashrc :
# Set some options, based on the OS
OS=`uname -s`
case "$OS" in
"SunOS" )
# Solaris ls doesn't allow color, so use special characters
LS_OPTS='-F'
alias ls='ls ${LS_OPTS}'
;;
"Linux" )
# GNU ls supports colors!
# See dircolors to customize colors
export LS_OPTS='--color=auto'
alias ls='ls ${LS_OPTS}'
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
"Darwin"|"FreeBSD")
# Most FreeBSD & Apple Darwin supports colors
export CLICOLOR=true
# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"
# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP
export GREP_OPTIONS="--color=auto"
;;
* )
echo "Unknown OS [$OS]"
;;
esac