Il y a maintenant un peu plus d’un an, Teo Mrnjavac, membre de la communauté KDE et un des auteurs d’Amarok, avait écrit un article intéressant sur des utilitaires en couleur pour le terminal.
Cet article va dans le même sens car pour moi, un shell personnalisé est tout de suite plus attrayant et l’utilisation de couleurs, lorsqu’elles le sont à bon escient, y contribue. L’autre aspect important et l’interactivité que permet un shell bien configuré, par le biais de la complétion des commandes par exemple. À ce titre, je ne saurais plus me passer de zsh (voir cet ancien article notamment).
Le shell
Un shell bien personnalisé, ça commence par un PS1
(invite de commande)
agréable. Chez moi, il ressemble à ça:
C’est donc un classique utilisateur@hôte
avec le chemin du dossier courant. Ce
dernier se trouve d’ailleurs raccourci si nécessaire:
Il change également de couleur en fonction des permissions du dossier courant:
Un autre point sympa: si je passe en root
, cela se remarque tout de suite:
A noter également que la couleur du nom de l’ĥôte change en fonction de l’hôte. Ainsi, ça permet de savoir encore plus facilement sur quelle machine on se trouve (et éviter d’éteindre par mégarde un serveur plutôt que son poste de travail par exemple…). Merci à Alex à qui j’ai piqué la configuration de base il y a quelques années.
Mon shell intègre également un autre prompt, situé à l’extrême droite, lorsque
le dossier courant est un dépôt git
ou mercurial
(je n’utilise pas svn
,
bazaar
ou autre donc n’en tiens pas compte). Il permet de visualiser en un
coup d’oeil l’état du dépôt: la branche courante, le nombre de nouveaux
fichiers, si des changements ont été apportés, s’ils ont été commités, s’il y a
besoin de compléter un merge, etc.
Pour plus d’information à ce sujet, je vous laisse vous référez à cet article que j’ai publié il y a plus d’un an en arrière.
Cela rend tout de suite le terminal plus agréable un prompt du genre, pas vrai?
Oui mais, il y a moyen de faire encore mieux. Je ne vais pas parler ici de
toutes les astuces que l’on peut utiliser via le ~/.zshrc
car cela serait
d’une part trop long et que ce n’est pas le sujet de cet article. En revanche,
puisque cet article traite de couleur et de shell, voici une astuce que je
trouve fort sympa. Peut-être que vous connaissez le shell fish (friendly
interactive shell)? C’est un shell qui possède beaucoup de fonctionnalités très
intéressantes (complétion, suggestions basées sur l’historique, utilisation
intensive de couleurs, etc.), la plupart activée par défaut. Exemple de
complétion dans un dépôt git
:
On peut remarquer sur cette dernière image une chose intéressante: les commandes
valides sont en bleu alors que les commandes non-valides sont en rouge. On voit
également que les chaînes sont colorées en jaune. Plutôt sympa non?
Personnellement, j’adore! Comme je n’utilise pas le shell fish
mais zsh
,
j’utilise un plugin dénommé zsh-syntax-highlighting qui se charge
d’effectuer le même rendu au niveau des couleurs pour zsh
. Exemple de rendu
(les exécutables valides étant ici en vert):
À propos de commandes valides ou non, j’ai également une autre personnalisation
de mon prompt que je trouve intéressante: l’indication du code de sortie d’une
commande lorsqu’elle retourne sur une erreur. Exemple:
Avec tout ça, on se retrouve déjà avec quelque chose d’intéressant. Cependant, à côté du shell à proprement parler, il y a également les utilitaires en ligne de commande que l’on utilise qui peuvent être paramétrés ou même remplacés par des équivalents plus colorés. Je vais donc tâcher d’en faire ici une liste non exhaustive.
ccze
CCZE permet de colorer des fichiers de logs. J’utilise cette fonction dans
mon ~/.zshrc
afin quand je dois débloquer une situation en consultant des
logs.
1 2 3 |
|
Ce qui donne quelque chose du genre:
Merci à Frank qui m’avait fourni l’astuce.
ack
ack est une alternative à grep(1)
, écrit en Perl
, qui se trouve être
particulièrement pratique pour trouver ce que l’on cherche parmi des fichiers
source par exemple:
git et mercurial
Il ne s’agit pas ici d’alternative mais simplement de configurer ces
gestionnaires de version afin que le retour de leur commandes respectives soit
un peu plus coloré. Pour git, j’ai ceci dans mon ~/.gitconfig
:
1 2 3 4 5 6 |
|
Et ceci dans mon ~/.hgrc
pour mercurial:
1 2 3 4 5 6 7 8 9 |
|
C’est aussi tout de suite plus agréable:
Si vous n’utilisez ni git
ni mercurial
et que votre gestionnaire de version
ne supporte pas les couleurs (svn
par exemple), vous pouvez toujours vous
rabattre sur colordiff afin d’avoir au moins un diff(1)
en couleur.
htop
On tombe cette fois dans un grand classique. htop est un bon remplaçant à
top(1)
(même si la qualité de son code source laisse un peu à désirer…):
cdu
Vous connaissez certainement du(1)
, cet utilitaire qui donne une estimation de
l’utilisation de l’espace disque occupé par le dossier donné en argument?
cdu en est une alternative en couleur:
C’est pratique pour un coup d’oeil rapide bien que je trouve ncdu, une
version ncurse (sans couleurs) de du(1)
, plus pratique à cet égard.
dfc
C’est presque un peu inutile que je le présente sur ce blog mais dfc fait
selon moi une excellente alternative à df(1)
(qui se charge de plus que
simplement ajouter de la couleur d’ailleurs):
Si l’outil ne vous plait pas, il existe des alternatives telles que pydf ou cdf.
freec
Frank, que j’ai déjà cité dans cet article, a écrit un programme alternatif à
free(1)
: freec.
Autres
Je trouve la liste déjà relativement exhaustive mais il en existe encore d’autres.
- ls++: La plupart des gens activent les couleurs pour la commande
ls(1)
viaLS_COLORS
. Personnellement, cela me suffit mais ceux qui en veulent plus peuvent passer par ce wrapperPerl
. - colorgcc: Qui se révèle être un bon palliatif à
gcc
pour les utilisateurs habitués à compiler avecclang
. - colormake: Pour colorer
make(1)
. - vimpager ou encore une configuration de
most
ouless
pour les pages de manuel. - …
Je suis sûr que vous saurez la compléter par des utilitaires que vous appréciez aussi. ;)