Comment afficher les pages de manuel en couleur sous Linux
Si vous désirez une présentation colorée de vos pages de manuel, similaire à la coloration syntaxique d'un éditeur de texte, deux méthodes simples s'offrent à vous. Découvrons ensemble ces deux approches !
L'importance de la coloration
La mise en évidence par la couleur facilite grandement la lecture. Elle permet de distinguer les éléments importants, évitant ainsi de passer à côté d'informations cruciales. Les éditeurs modernes intègrent la coloration syntaxique, qui utilise différentes couleurs pour identifier les composants d'un langage de programmation. Mots-clés, variables, chaînes de caractères et nombres sont ainsi mis en évidence, simplifiant l'analyse visuelle du code.
Cette fonctionnalité serait très bénéfique pour les pages de manuel Linux. Bien que leur concision soit appréciable, certaines pages sont longues, denses et complexes à parcourir. Tout ce qui peut améliorer leur lisibilité est donc le bienvenu.
Nous allons explorer deux façons d'obtenir cet effet coloré dans les pages de manuel. L'une consiste à utiliser un afficheur (pager) alternatif, tandis que l'autre implique la transmission de paramètres spécifiques à l'afficheur par défaut, *less*, au moment de l'exécution. La solution la plus pratique est de créer une fonction shell.
L'afficheur *most* est un visualiseur de fichiers, comparable à *more* ou *less*, mais avec une gestion améliorée des fichiers volumineux. Il colore également les pages de manuel par défaut.
Pour l'installer sur Ubuntu, voici la commande à utiliser :
sudo apt-get install most
Pour installer *most* sur Fedora, saisissez :
sudo dnf install most
Sur Manjaro, utilisez plutôt cette commande :
sudo pacman -Syu most
Pour configurer Linux afin qu'il utilise *most* comme afficheur par défaut, il faut exporter la valeur de la variable d'environnement `PAGER`.
Saisissez la commande suivante :
export PAGER="most"
Cette modification sera effective uniquement dans la fenêtre de terminal actuelle. Pour la rendre permanente, il faut l'ajouter au fichier « .bashrc », en insérant cette ligne à la fin :
gedit .bashrc
Ajoutez la ligne, sauvegardez les modifications et fermez l'éditeur.
Pour que les modifications du fichier « .bashrc » soient prises en compte, vous pouvez fermer et rouvrir la fenêtre du terminal.
Si vous souhaitez éviter de fermer la fenêtre, utilisez la commande `source`, ou son raccourci `.` , qui permet de recharger le fichier « .bashrc » dans le shell courant.
Tapez la commande suivante :
. .bashrc
Affichage coloré des pages de manuel
Ouvrons une page de manuel et constatons le résultat :
man grep
La page de manuel s'affiche comme d'habitude, mais le texte est maintenant présenté avec des couleurs distinctes.
Faites défiler la page et vous remarquerez comment les différents éléments sont mis en couleur.
L'utilisation de *most* est très semblable à celle de *less*, mais avec quelques différences. Appuyez sur la touche `H` dans *most* pour afficher une liste des raccourcis clavier et de leurs fonctionnalités.
Utiliser la couleur avec *less*
Si vous ne souhaitez pas installer un nouvel afficheur ou apprendre de nouveaux raccourcis clavier, il existe une astuce pour forcer *less* à afficher les couleurs. Il existe plusieurs manières de procéder, mais nous allons explorer la plus rapide et la plus simple.
Cette méthode s'appuie sur les codes couleurs ANSI pour contrôler l'affichage, hérités des paramètres termcap (désormais obsolètes).
Ces paramètres termcap définissaient la manière dont les terminaux informatiques de différentes marques et modèles devaient interpréter les commandes d'affichage. *Less*, comme d'autres logiciels, possédait ses propres paramètres termcap.
Voici les paramètres termcap de *less* qui nous intéressent :
`LESS_TERMCAP_md`: active le gras (double intensité).
`LESS_TERMCAP_me`: désactive le gras.
`LESS_TERMCAP_us`: active le soulignement.
`LESS_TERMCAP_ue`: désactive le soulignement.
`LESS_TERMCAP_so`: active la mise en évidence (texte inversé).
`LESS_TERMCAP_se`: désactive la mise en évidence.
Nous allons redéfinir ces paramètres pour contrôler les couleurs grâce aux codes couleurs ANSI.
Le format des codes de couleur est simple à comprendre :
Le caractère `e` au début identifie la séquence comme un code de contrôle.
Le `m` à la fin de la séquence marque la fin de la commande, et provoque son exécution.
Les chiffres entre `[` et `m` indiquent les couleurs à utiliser. Certains nombres désignent la couleur de fond, d'autres celle du texte.
Voici les codes que nous utiliserons pour activer et désactiver la couleur :
`'e[01;31m'` : Fond noir, texte rouge.
`'e[01;32m'` : Fond noir, texte vert.
`'e[45;93m'` : Fond magenta, texte jaune vif.
`'e[0m'` : Désactive tous les effets.
Nous allons regrouper tout cela dans une fonction shell que nous appellerons `man`. Elle définira ces valeurs et appellera la commande `man` réelle.
Si vous avez déjà des fonctions shell dans un autre fichier, vous pouvez y ajouter celle-ci. Sinon, copiez le texte suivant à la fin de votre fichier « .bashrc » :
man() {
LESS_TERMCAP_md=$'e[01;31m'
LESS_TERMCAP_me=$'e[0m'
LESS_TERMCAP_us=$'e[01;32m'
LESS_TERMCAP_ue=$'e[0m'
LESS_TERMCAP_so=$'e[45;93m'
LESS_TERMCAP_se=$'e[0m'
command man "$@"
}
gedit .bashrc
Collez la fonction à la fin de votre fichier « .bashrc ».
Sauvegardez les modifications et fermez l'éditeur. Maintenant, pour que la fonction soit effective, il faut recharger le fichier « .bashrc » avec la commande :
. .bashrc
Désormais, lorsque vous consulterez une page de manuel, elle s'affichera en couleur via *less* :
man chmod
La page de manuel s'ouvre, avec une coloration des différents éléments.
Le jaune sur magenta n'est peut-être pas le meilleur choix. Heureusement, vous pouvez personnaliser les codes de couleur selon vos préférences.
Bien plus qu'un simple effet esthétique
Il est facile de parcourir une longue page de manuel et de manquer une information importante, comme une option ou un paramètre, noyée dans la masse de texte.
Désormais, les noms des paramètres et des options seront mis en évidence et beaucoup plus faciles à repérer.