tag:linuxfr.org,2005:/tags/tuto-less/publicLinuxFr.org : les contenus étiquetés avec « tuto-less »2016-11-20T23:53:41+01:00/favicon.pngtag:linuxfr.org,2005:Diary/369062016-10-11T12:29:00+02:002017-07-26T12:23:18+02:00Back to basics : avoir un excellent pager avec lessLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Un petit article sur des trucs que j’apprécie pas mal avec <code>less</code> et qui explique pourquoi je n’utilise pas (et je m’énerve) quand je dois utiliser <code>more</code>.</p>
<p>D’abord pour les étourdis. Un <em>pager</em> 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 <em>man</em>. Il existe trois principaux pager dans nos contrées : <code>more</code> (le vieux), <code>most</code> (le jeune) et <code>less</code> (mon préféré).</p>
<h2 id="la-base">La base</h2>
<p>Bon, le truc de base c’est de lui donner un fichier texte en paramètre :</p>
<pre><code class="sh">less /etc/hosts</code></pre>
<p>Waow !</p>
<p>Pour naviguer, on peut utiliser les flèches, la touche espace, mais aussi les classiques g/G.<br>
Il est possible de rechercher du texte avec les commandes <code>/<texte de recherche></code> (recherche en avant) ou <code>?<texte de recherche></code> (recherche en arrière).<br>
Il est possible de filtrer les lignes affichées grâce à la commande <code>&<motif></code> (c’est proche d’un <code>grep <motif> fichier | less</code> en plus souple vu qu’on peut revenir en arrière).<br>
Une dernière option qui peut s’avérer intéressante : <code>v</code>. Elle ouvre le document dans votre éditeur de texte préféré (→ l’éditeur défini par la variable d’environnement <code>VISUAL</code> ou <code>EDITOR</code>, le cas échéant).</p>
<p>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.</p>
<p>Généralement, pour l’activer il suffit de le donner dans la variable d’environnement <code>PAGER</code>.</p>
<h2 id="un-peu-de-conf">Un peu de conf</h2>
<p>Personnellement, j’aime bien avoir une configuration de <em>less</em> bien précise, je vais vous la décrire :</p>
<pre><code class="sh"><span class="nv">LESS_TERMCAP_mb</span><span class="o">=</span><span class="s1">$'\E[01;31m'</span>
<span class="nv">LESS_TERMCAP_md</span><span class="o">=</span><span class="s1">$'\E[01;31m'</span>
<span class="nv">LESS_TERMCAP_me</span><span class="o">=</span><span class="s1">$'\E[0m'</span>
<span class="nv">LESS_TERMCAP_so</span><span class="o">=</span><span class="s1">$'\E[01;44;33m'</span>
<span class="nv">LESS_TERMCAP_se</span><span class="o">=</span><span class="s1">$'\E[0m'</span>
<span class="nv">LESS_TERMCAP_us</span><span class="o">=</span><span class="s1">$'\E[01;32m'</span>
<span class="nv">LESS_TERMCAP_ue</span><span class="o">=</span><span class="s1">$'\E[0m'</span></code></pre>
<p>Ça, c’est pour avoir les <em>man</em> (c’est pas limité aux pages de manuel, mais c’est principalement elles qui s’en servent) en couleur.</p>
<pre><code class="sh"><span class="nv">LESS</span><span class="o">=</span><span class="s2">"-FSRXI"</span></code></pre>
<p>C’est assez pratique pour ne pas avoir à redonner perpétuellement les options de <em>less</em> à <em>less</em> (et c’est pratique parce que les alias ça marche pas pour les <em>man</em>).<br>
Donc ces 4 options :</p>
<ul>
<li>
<code>F</code> : quitte <em>less</em> si le contenu qu’il tente d’afficher fait moins d’un écran (très utile avec l’option <code>X</code>) ;</li>
<li>
<code>S</code> : 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) ;</li>
<li>
<code>R</code> : pour autoriser les séquences ANSI (utile pour la couleur) ;</li>
<li>
<code>X</code> : ne nettoie pas l’écran à la fermeture ; en combinaison de <code>-F</code>, <em>less</em> devient utilisable comme un <code>cat</code> pour pas mal de choses. Ça me permet de continuer de voir ce qu’il y avait dans un <em>man</em>, 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 ;</li>
<li>I : la recherche est insensible à la casse, sauf si cette dernière contient des lettres majuscules.</li>
</ul><h2 id="cest-tout">C’est tout ?</h2>
<p>Non, mon pauvre ! <em>less</em> peut aller plus loin. La fonctionnalité méconnue de less, c’est <em>lesspipe</em>. Ça permet à <em>less</em> de lire tout et n’importe quoi, du moment que tu sais comment le faire afficher dans un terminal.</p>
<p>Pour activer ça, il faut d’abord exporter deux petites variables :</p>
<pre><code class="sh"><span class="nb">eval</span> <span class="k">$(</span>lesspipe<span class="k">)</span></code></pre>
<p>Ensuite, il est possible de configurer tout ça via un script à placer dans <code>~/.lessfilter</code>. Par exemple, pour lire les fichiers de capture créés grâce à <code>tcpdump</code> ou <code>tshark</code> :</p>
<pre><code class="sh"><span class="ch">#!/bin/zsh</span>
<span class="k">if</span> <span class="o">[</span> -d <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span><span class="k">then</span>
ls -la <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span>
<span class="nb">exit</span> <span class="m">0</span>
<span class="k">fi</span>
<span class="k">case</span> <span class="s2">"</span><span class="si">${</span><span class="p">(L)1</span><span class="si">}</span><span class="s2">"</span> in
*.cap<span class="o">)</span> <span class="c1"># il n’y a pas de règles sur les</span>
tshark -r <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span>
<span class="p">;;</span>
*<span class="o">)</span>
<span class="nb">exit</span> <span class="m">1</span>
<span class="k">esac</span>
<span class="nb">exit</span> <span class="m">0</span></code></pre>
<p>Puis un :</p>
<pre><code class="sh">chmod <span class="m">700</span> ~/.lessfilter~/.lessfilter</code></pre>
<p>Et le tour est joué. Maintenant, il suffit de faire :</p>
<pre><code class="sh">less fichier.cap</code></pre>
<p>Pour voir vos traces dans votre terminal et pouvoir naviguer dedans.</p>
<h2 id="le-mien-cest-lmieux">Le mien, c’est l’mieux !</h2>
<p><em>less</em> est vraiment un <em>pager</em> 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 <code>Ctrl</code> + <code>C</code>).</p>
<p>Il existe néanmoins deux autres <em>pagers</em> très puissants : Vim et Emacs.<br>
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 <em>vim</em> et je suis balbutiant en <em>emacs</em>).<br>
Je laisse donc les spécialistes du genre nous concocter leurs meilleures recettes qui expliquent pourquoi le leur est meilleur.<br>
De la même manière, je ne me suis jamais plongé dans <code>most</code> qui a l’air plus simpliste que <code>less</code>, mais si parmi vous certains veulent le faire découvrir j’en serais enchanté. :)</p><div><a href="https://linuxfr.org/users/barmic/journaux/back-to-basics-avoir-un-excellent-pager-avec-less.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/110259/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/barmic/journaux/back-to-basics-avoir-un-excellent-pager-avec-less#comments">ouvrir dans le navigateur</a>
</p>
barmichttps://linuxfr.org/nodes/110259/comments.atom