2002-12-09 04:39:15 +01:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>less</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>Corrig<69> des exercices sur <code>less</code></h1>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On aborde ici <code>less</code>, qui est une version plus <20>labor<6F>e de
|
|
|
|
|
<code>more</code>; ce dernier est toujours d<>taill<6C> dans dans les ouvrages sur
|
|
|
|
|
Unix, et de fait il est toujours pr<70>sent sur ces syst<73>mes, ce qui n'est pas
|
|
|
|
|
forc<EFBFBD>ment vrai pour <code>less</code> (qui est quand m<>me tr<74>s courant).
|
|
|
|
|
<code>more</code> est beaucoup plus rudimentaire, alors que <code>less</code>
|
2007-07-13 10:40:16 +02:00
|
|
|
|
a beaucoup de fonctionnalit<69>s appr<70>ciables : vid<69>o inverse pour les
|
2002-12-09 04:39:15 +01:00
|
|
|
|
motifs recherch<63>s, d<>placements en avant et en arri<72>re pour la recherche, etc.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
|
|
|
|
|
<li><a name="less1"><strong> Comment fait-on pour obtenir une page d'aide avec
|
2007-07-13 10:40:16 +02:00
|
|
|
|
<code>less</code> ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>On tape <code>h</code> ou <code>H</code> pour afficher une page d'aide. On s'y
|
|
|
|
|
d<EFBFBD>place comme dans <code>less</code> (fl<66>ches, <code>^D</code>,
|
|
|
|
|
<code>^F</code>, <code>^B</code>, <code>^P</code>, <code>SPC</code>,
|
|
|
|
|
<code>j</code>, <code>k</code>...). Pour quitter l'aide, ce sont les m<>mes
|
2007-07-13 10:40:16 +02:00
|
|
|
|
commandes que pour quitter <code>less</code> : <code>q</code>,
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>Q</code>, <code>:q</code>, <code>:Q</code>, <code>ZZ</code>.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li> <a name="less2"><strong> Comment examiner plusieurs fichiers <20> la
|
2007-07-13 10:40:16 +02:00
|
|
|
|
suite ? Comment passe-t-on au suivant ? Comment revient-on au
|
|
|
|
|
pr<EFBFBD>c<EFBFBD>dent ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il suffit de donner plusieurs fichiers en argument <20> la commande
|
|
|
|
|
<code>less</code>; par exemple, pour examiner sucessivement les fichiers
|
2007-07-13 10:40:16 +02:00
|
|
|
|
<code>toto</code>, <code>bla</code> et <code>blu</code>, on tape :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
less toto bla blu
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour passer au fichier suivant, on tape <code>:n</code> (<em>next</em>); pour
|
|
|
|
|
revenir au fichier pr<70>c<EFBFBD>dent, on tape <code>:p</code> (<em>previous</em>).
|
|
|
|
|
<code>:x</code> permet de revenir au premier fichier sp<73>cifi<66>.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less3"><strong> Quelles sont les commandes diff<66>rentes qui
|
2007-07-13 10:40:16 +02:00
|
|
|
|
permettent de quitter <code>less</code> ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<p>
|
2007-07-13 10:40:16 +02:00
|
|
|
|
Ce sont : <code>q</code>, <code>Q</code>, <code>:q</code>, <code>:Q</code>,
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>ZZ</code>.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less4"><strong> Comment dire <20> <code>less</code> d'ouvrir le
|
2007-07-13 10:40:16 +02:00
|
|
|
|
fichier en pla<6C>ant en haut de l'<27>cran la ligne <em>n</em> ?
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</strong></a>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On sp<73>cifie le num<75>ro de la ligne apr<70>s le signe <code>+</code>; par exemple,
|
2007-07-13 10:40:16 +02:00
|
|
|
|
pour ouvrir le fichier <code>rapport</code> sur la ligne 57, on tape :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
less +57 rapport
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less5"><strong> Comment dire <20> <code>less</code> d'ouvrir le
|
|
|
|
|
fichier en pla<6C>ant en haut de l'<27>cran la premi<6D>re ligne o<> appara<72>t un motif
|
2007-07-13 10:40:16 +02:00
|
|
|
|
donn<EFBFBD> ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On utilise l'option <code>-p</code> de la commande <code>less</code>; par
|
|
|
|
|
exemple, pour chercher le mot <20>toto<74> dans le fichier <code>rapport</code>, on
|
2007-07-13 10:40:16 +02:00
|
|
|
|
tape :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
less -p toto rapport
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2007-07-13 10:40:16 +02:00
|
|
|
|
On peut aussi indiquer le motif recherch<63> de la fa<66>on suivante :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
less +/toto rapport
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less6"><strong> Quelles sont les deux commandes de
|
|
|
|
|
<code>less</code> qui permettent de chercher un motif dans un fichier,
|
2007-07-13 10:40:16 +02:00
|
|
|
|
respectivement apr<70>s et avant la position courante ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour chercher un motif plus en avant dans le texte, on utilise le slash (barre
|
2007-07-13 10:40:16 +02:00
|
|
|
|
oblique vers la droite : <code>/</code>). Par exemple :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
/mot
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour chercher en arri<72>re de la position courante, on utilise le point
|
|
|
|
|
d'interrogation. Pour aller <20> la prochaine occurence du mot, il suffit de
|
|
|
|
|
taper <code>n</code> (<em>next</em>). Pour aller <20> la pr<70>c<EFBFBD>dente occurence du
|
|
|
|
|
mot, il faut taper <code>N</code>. <20>videmment, quand on cherche un motif avec
|
|
|
|
|
<code>?</code>, <code>n</code> remonte dans le texte et <code>N</code>
|
|
|
|
|
descend dans le texte.</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Une fois le d<>but ou la fin du fichier atteint, la recherche s'arr<72>te. On
|
|
|
|
|
peut utiliser les expressions r<>guli<6C>res.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="less7"><strong> Comment dire <20> <code>less</code> de chercher le
|
|
|
|
|
mot <20> partir de la premi<6D>re ligne du fichier, et ce o<> que l'on soit dans le
|
2007-07-13 10:40:16 +02:00
|
|
|
|
fichier ? </strong></a> <p>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
Il faut taper <code>^F</code> apr<70>s avoir tap<61> <code>/</code>. En fait,
|
|
|
|
|
<code>^F</code> fait commencer la recherche au premier fichier dont on a donn<6E>
|
|
|
|
|
le nom; quand il n'y en a qu'un seul, cela place de fait tout au d<>but du
|
|
|
|
|
fichier. Par exemple, pour chercher <code>toto</code> alors qu'on se trouve <20>
|
2007-07-13 10:40:16 +02:00
|
|
|
|
la fin du fichier, on tape : </p>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
/^F
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
2007-07-13 10:40:16 +02:00
|
|
|
|
Le prompt devient alors :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
First-file /
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="continue">
|
|
|
|
|
et il n'y a plus qu'<27> taper le motif recherch<63>.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="less8"><strong> Que se passe-t-il si l'on cherche le motif
|
2007-07-13 10:40:16 +02:00
|
|
|
|
suivant : <20>toTo<54> en donnant l'option <code>-i</code> <20>
|
|
|
|
|
<code>less</code> ? Quelle option faut-il mettre <20> la place de
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>-i</code> pour chercher <code>toTo</code> tout en ignorant la casse des
|
2007-07-13 10:40:16 +02:00
|
|
|
|
caract<EFBFBD>res ? </strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<p>
|
|
|
|
|
L'option <code>-i</code> signifie <em>ignorecase</em>, c'est-<2D>-dire ignorer la
|
|
|
|
|
casse des caract<63>res (diff<66>rence entre majuscules et minuscules). Si donc
|
2007-07-13 10:40:16 +02:00
|
|
|
|
je tape (au choix) :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
less -ip TOTO rapport
|
|
|
|
|
less -ip toto rapport
|
|
|
|
|
less -i +/toto rapport
|
|
|
|
|
less -i +/TOTO rapport
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
<code>less</code> ne fera pas la diff<66>rence entre les majuscules et les
|
|
|
|
|
minuscules, et je trouverai <code>toto</code> comme <code>TOTO</code>. Bien
|
|
|
|
|
s<EFBFBD>r, c'est la m<>me chose si je lance <code>less</code> avec l'option
|
|
|
|
|
<code>-i</code> et que je cherche ensuite le mot <20> l'int<6E>rieur du fichier avec
|
|
|
|
|
<code>/</code> ou <code>?</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
<strong>Mais</strong> l'option <code>-i</code> est invalid<69>e si le motif
|
2007-07-13 10:40:16 +02:00
|
|
|
|
recherch<EFBFBD> contient des majuscules <em>et</em> des minuscules : si, en
|
2002-12-09 04:39:15 +01:00
|
|
|
|
lan<EFBFBD>ant <code>less</code> comme ci-dessus, je cherche le motif
|
|
|
|
|
<code>Toto</code>, je ne trouverai que <code>Toto</code> et pas
|
|
|
|
|
<code>TOTO</code> par exemple. Pour contourner cette restriction, il faut
|
|
|
|
|
lancer <code>less</code> avec l'option <code>-I</code>, qui est donc un
|
|
|
|
|
<em>ignorecase</em> <20>robuste<74>.
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less9"><strong> Quelles sont les commandes qui permettent d'aller
|
|
|
|
|
<EFBFBD> la prochaine (resp. pr<70>c<EFBFBD>dente) occurence du motif recherch<63> <20> travers
|
2007-07-13 10:40:16 +02:00
|
|
|
|
tous les fichiers <20>dit<69>s ? </strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour aller <20> l'occurence suivante (resp. pr<70>c<EFBFBD>dente) d'un motif dans un
|
|
|
|
|
fichier, on utilise <code>n</code> (resp. <code>N</code>). Pour faire la m<>me
|
|
|
|
|
op<EFBFBD>ration mais sans passer manuellement de fichier en fichier, on tape
|
|
|
|
|
<code>ESC n</code> pour chercher en avant, et <code>ESC N</code> pour chercher
|
|
|
|
|
en arri<72>re. <code>ESC</code> d<>signe bien s<>r la touche d'<27>chappement
|
|
|
|
|
(<code>Escape</code>).
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="less10"><strong>Comment chercher dans un fichier le caract<63>re
|
2007-07-13 10:40:16 +02:00
|
|
|
|
<code>/</code> ?</strong></a> <p>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
Le caract<63>re <code>/</code> sert <20> chercher un mot dans le fichier. Si on tape
|
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
//
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2007-07-13 10:40:16 +02:00
|
|
|
|
<code>less</code> r<>pond : <code>Pattern not found</code>. Il faut donc
|
2002-12-09 04:39:15 +01:00
|
|
|
|
dire <20> <code>less</code> de consid<69>rer le <code>/</code> comme un caract<63>re
|
|
|
|
|
ordinaire, et pas comme un caract<63>re sp<73>cial. Comme avec toutes les
|
|
|
|
|
expressions r<>guli<6C>res, c'est le backslash (barre oblique vers la
|
2007-07-13 10:40:16 +02:00
|
|
|
|
gauche : <code>\</code>) qui sert <20> cela. Pour chercher un
|
|
|
|
|
<code>/</code>, on tape donc :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
/\/
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>La page de man donne une liste de caract<63>res qui sont sp<73>ciaux avec
|
|
|
|
|
<code>/</code> et <code>?</code>. Ces commandes de recherche utilisent les
|
|
|
|
|
expressions r<>guli<6C>res de <code>ed</code> (et de <code>vi</code> par
|
|
|
|
|
cons<EFBFBD>quent).
|
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2007-07-13 10:40:16 +02:00
|
|
|
|
Auteur : <20>milia Robin, Jo<4A>l Riou. Derni<6E>re modification le <date value="$Date: 2007-07-13 08:41:42 $"/>.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|