URL: https://linuxfr.org/users/barmic/journaux/back-to-basics-avoir-un-excellent-pager-avec-less Title: Back to basics : avoir un excellent pager avec less Authors: barmic Date: 2016年10月11日T12:29:00+02:00 License: CC By-SA Tags: less, shell, astuce, more, most, tuto-less et man Score: 73 Un petit article sur des trucs que j’apprécie pas mal avec `less` et qui explique pourquoi je n’utilise pas (et je m’énerve) quand je dois utiliser `more`. D’abord pour les étourdis. Un _pager_ est un outil en ligne de commande qui permet de naviguer dans un document texte dont la taille dépasse celle de votre terminal. C’est ce que vous utilisez sans le savoir à chaque fois que vous lisez une page de manuel avec _man_. Il existe trois principaux pager dans nos contrées : `more` (le vieux), `most` (le jeune) et `less` (mon préféré). La base ======= Bon, le truc de base c’est de lui donner un fichier texte en paramètre : ```sh less /etc/hosts ``` Waow ! Pour naviguer, on peut utiliser les flèches, la touche espace, mais aussi les classiques g/G. Il est possible de rechercher du texte avec les commandes ``/`` (recherche en avant) ou ``?`` (recherche en arrière). Il est possible de filtrer les lignes affichées grâce à la commande ``&`` (c’est proche d’un ``grep fichier | less`` en plus souple vu qu’on peut revenir en arrière). Une dernière option qui peut s’avérer intéressante : ``v``. Elle ouvre le document dans votre éditeur de texte préféré (→ l’éditeur défini par la variable d’environnement `VISUAL` ou `EDITOR`, le cas échéant). Il existe plein d’autres commandes, je vous invite à lire le manuel pour les découvrir. Je ne présente que quelques‐unes qui me sont le plus utile. Généralement, pour l’activer il suffit de le donner dans la variable d’environnement `PAGER`. Un peu de conf ============== Personnellement, j’aime bien avoir une configuration de _less_ bien précise, je vais vous la décrire : ```sh LESS_TERMCAP_mb=$'\E[01;31m' LESS_TERMCAP_md=$'\E[01;31m' LESS_TERMCAP_me=$'\E[0m' LESS_TERMCAP_so=$'\E[01;44;33m' LESS_TERMCAP_se=$'\E[0m' LESS_TERMCAP_us=$'\E[01;32m' LESS_TERMCAP_ue=$'\E[0m' ``` Ça, c’est pour avoir les _man_ (c’est pas limité aux pages de manuel, mais c’est principalement elles qui s’en servent) en couleur. ```sh LESS="-FSRXI" ``` C’est assez pratique pour ne pas avoir à redonner perpétuellement les options de _less_ à _less_ (et c’est pratique parce que les alias ça marche pas pour les _man_). Donc ces 4 options : - `F` : quitte _less_ si le contenu qu’il tente d’afficher fait moins d’un écran (très utile avec l’option `X`) ; - `S` : ne pas renvoyer à la ligne les lignes plus larges que l’écran ; je trouve que c’est plus lisible pour les journaux (les débuts de lignes sont bien alignés) ; - `R` : pour autoriser les séquences ANSI (utile pour la couleur) ; - `X` : ne nettoie pas l’écran à la fermeture ; en combinaison de `-F`, _less_ devient utilisable comme un `cat` pour pas mal de choses. Ça me permet de continuer de voir ce qu’il y avait dans un _man_, même une fois quitté (et donc de ne pas avoir besoin de 2 Shells). Ça ne plaira pas à tout le monde, car ça peu polluer l’écran ; - I : la recherche est insensible à la casse, sauf si cette dernière contient des lettres majuscules. C’est tout ? ============ Non, mon pauvre ! _less_ peut aller plus loin. La fonctionnalité méconnue de less, c’est _lesspipe_. Ça permet à _less_ de lire tout et n’importe quoi, du moment que tu sais comment le faire afficher dans un terminal. Pour activer ça, il faut d’abord exporter deux petites variables : ```sh eval $(lesspipe) ``` Ensuite, il est possible de configurer tout ça via un script à placer dans ``~/.lessfilter``. Par exemple, pour lire les fichiers de capture créés grâce à ``tcpdump`` ou ``tshark`` : ```sh #!/bin/zsh if [ -d "1ドル" ];then ls -la "1ドル" exit 0 fi case "${(L)1}" in *.cap) # il n’y a pas de règles sur les tshark -r "1ドル" ;; *) exit 1 esac exit 0 ``` Puis un : ```sh chmod 700 ~/.lessfilter~/.lessfilter ``` Et le tour est joué. Maintenant, il suffit de faire : ```sh less fichier.cap ``` Pour voir vos traces dans votre terminal et pouvoir naviguer dedans. Le mien, c’est l’mieux ! ======================== _less_ est vraiment un _pager_ très pratique et d’une extrême vélocité. L’utiliser avec des fichiers de centaines de Mio n’a jamais été un problème (il a un comportement assez rigolo, il affiche toujours instantanément le fichier, mais il met du temps à compter les lignes et on peut lui dire que ce n’est pas la peine de le faire avec un `Ctrl` + `C`). Il existe néanmoins deux autres _pagers_ très puissants : Vim et Emacs. Je ne les trouve pas hyper agréables, mais je ne suis pas un spécialiste de ces deux éditeurs (j’ai un usage « normal » de _vim_ et je suis balbutiant en _emacs_). Je laisse donc les spécialistes du genre nous concocter leurs meilleures recettes qui expliquent pourquoi le leur est meilleur. De la même manière, je ne me suis jamais plongé dans ``most`` qui a l’air plus simpliste que ``less``, mais si parmi vous certains veulent le faire découvrir j’en serais enchanté. :)

AltStyle によって変換されたページ (->オリジナル) /