tuteurs.ens.fr/www/unix/exercices/solutions/less-sol.html

322 lines
12 KiB
HTML
Raw Normal View History

2024-04-02 20:48:26 +02:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>less</title>
<link rel="stylesheet" href="../../../tuteurs.css" type="text/css" />
</head>
<body>
<div class="navigation">
<h1>Tuteurs informatique<br /><a href="../../../meta/contact.html">Nous contacter</a></h1>
<hr />
<ul class="menu">
<li>
<a href="../../../meta/charte_graphique.html">Utiliser ce site</a>
</li>
<li>
<a href="../../../actualite.html">Actu et stages</a>
</li>
<li>
<a href="../../../docs/">Docs à imprimer</a>
</li>
<li>
<a href="../../../meta/plan_site.html">Plan du site</a>
</li>
<li>
<a href="../../../search.html">Rechercher</a>
</li>
</ul>
<hr />
<ul class="arbre">
<li>
<a href="../../../">Les tuteurs</a>
<ul class="arbre">
<li>
<a href="../../">Unix</a>
<ul class="arbre">
<li>
<a href="../">Exercices</a>
<ul class="arbre">
<li>
<a href="./">Solutions</a>
<ul class="arbre">
<li>
<a href="contact-sol.html">Prise de contact</a>
</li>
<li>
<a href="cp_mv-sol.html">cp et mv</a>
</li>
<li>
<a href="enchainer-sol.html">Pipes</a>
</li>
<li>
<a href="find-sol.html">find</a>
</li>
<li>
<a href="grep-sol.html">grep</a>
</li>
<li>
<a href="interface-sol.html">Interface</a>
</li>
<li>
<a href="less-sol.html" class="actuel">less</a>
</li>
<li>
<a href="ls-sol.html">ls</a>
</li>
<li>
<a href="mkdir_cd-sol.html">Répertoires</a>
</li>
<li>
<a href="systeme-sol.html">Système</a>
</li>
<li>
<a href="unix_deb-sol.html">Commandes Unix</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<ul class="menu">
<li>
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
</li>
<li>
<a href="http://www.ens.fr/">ENS</a>
</li>
<li>
<a href="http://www.spi.ens.fr/">SPI</a>
</li>
</ul>
</div>
<div class="corps">
<h1>Corrigé des exercices sur <code>less</code></h1>
<p>
On aborde ici <code>less</code>, qui est une version plus élaborée de
<code>more</code>; ce dernier est toujours détaillé dans dans les ouvrages sur
Unix, et de fait il est toujours présent sur ces systèmes, ce qui n'est pas
forcément vrai pour <code>less</code> (qui est quand même très courant).
<code>more</code> est beaucoup plus rudimentaire, alors que <code>less</code>
a beaucoup de fonctionnalités appréciables : vidéo inverse pour les
motifs recherchés, déplacements en avant et en arrière pour la recherche, etc.
</p>
<ol>
<li>
<a name="less1" id="less1">
<strong> Comment fait-on pour obtenir une page d'aide avec
<code>less</code> ? </strong>
</a>
<p>On tape <code>h</code> ou <code>H</code> pour afficher une page d'aide. On s'y
déplace comme dans <code>less</code> (flè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
commandes que pour quitter <code>less</code> : <code>q</code>,
<code>Q</code>, <code>:q</code>, <code>:Q</code>, <code>ZZ</code>.
</p>
</li>
<li>
<a name="less2" id="less2">
<strong> Comment examiner plusieurs fichiers à la
suite ? Comment passe-t-on au suivant ? Comment revient-on au
précédent ? </strong>
</a>
<p>
Il suffit de donner plusieurs fichiers en argument à la commande
<code>less</code>; par exemple, pour examiner sucessivement les fichiers
<code>toto</code>, <code>bla</code> et <code>blu</code>, on tape :
</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écédent, on tape <code>:p</code> (<em>previous</em>).
<code>:x</code> permet de revenir au premier fichier spécifié.
</p>
</li>
<li>
<a name="less3" id="less3">
<strong> Quelles sont les commandes différentes qui
permettent de quitter <code>less</code> ? </strong>
</a>
<p>
Ce sont : <code>q</code>, <code>Q</code>, <code>:q</code>, <code>:Q</code>,
<code>ZZ</code>.
</p>
</li>
<li>
<a name="less4" id="less4">
<strong> Comment dire à <code>less</code> d'ouvrir le
fichier en plaçant en haut de l'écran la ligne <em>n</em> ?
</strong>
</a>
<p>
On spécifie le numéro de la ligne après le signe <code>+</code>; par exemple,
pour ouvrir le fichier <code>rapport</code> sur la ligne 57, on tape :
</p>
<pre>
less +57 rapport
</pre>
</li>
<li>
<a name="less5" id="less5">
<strong> Comment dire à <code>less</code> d'ouvrir le
fichier en plaçant en haut de l'écran la première ligne où apparaît un motif
donné ? </strong>
</a>
<p>
On utilise l'option <code>-p</code> de la commande <code>less</code>; par
exemple, pour chercher le mot «toto» dans le fichier <code>rapport</code>, on
tape :
</p>
<pre>
less -p toto rapport
</pre>
<p>
On peut aussi indiquer le motif recherché de la façon suivante :
</p>
<pre>
less +/toto rapport
</pre>
</li>
<li>
<a name="less6" id="less6">
<strong> Quelles sont les deux commandes de
<code>less</code> qui permettent de chercher un motif dans un fichier,
respectivement après et avant la position courante ? </strong>
</a>
<p>
Pour chercher un motif plus en avant dans le texte, on utilise le slash (barre
oblique vers la droite : <code>/</code>). Par exemple :
</p>
<pre>
/mot
</pre>
<p>
Pour chercher en arrière de la position courante, on utilise le point
d'interrogation. Pour aller à la prochaine occurence du mot, il suffit de
taper <code>n</code> (<em>next</em>). Pour aller à la précédente occurence du
mot, il faut taper <code>N</code>. É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ête. On
peut utiliser les expressions régulières.
</p>
</li>
<li>
<a name="less7" id="less7">
<strong> Comment dire à <code>less</code> de chercher le
mot à partir de la première ligne du fichier, et ce où que l'on soit dans le
fichier ? </strong>
</a>
<p>
Il faut taper <code>^F</code> après avoir tapé <code>/</code>. En fait,
<code>^F</code> fait commencer la recherche au premier fichier dont on a donné
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 à
la fin du fichier, on tape : </p>
<pre>
/^F
</pre>
<p class="continue">
Le prompt devient alors :
</p>
<pre>
First-file /
</pre>
<p class="continue">
et il n'y a plus qu'à taper le motif recherché.
</p>
</li>
<li>
<a name="less8" id="less8">
<strong> Que se passe-t-il si l'on cherche le motif
suivant : «toTo» en donnant l'option <code>-i</code> à
<code>less</code> ? Quelle option faut-il mettre à la place de
<code>-i</code> pour chercher <code>toTo</code> tout en ignorant la casse des
caractères ? </strong>
</a>
<p>
L'option <code>-i</code> signifie <em>ignorecase</em>, c'est-à-dire ignorer la
casse des caractères (différence entre majuscules et minuscules). Si donc
je tape (au choix) :
</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érence entre les majuscules et les
minuscules, et je trouverai <code>toto</code> comme <code>TOTO</code>. Bien
sû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 à l'intérieur du fichier avec
<code>/</code> ou <code>?</code>.
</p>
<p><strong>Mais</strong> l'option <code>-i</code> est invalidée si le motif
recherché contient des majuscules <em>et</em> des minuscules : si, en
lanç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> «robuste».
</p>
</li>
<li>
<a name="less9" id="less9">
<strong> Quelles sont les commandes qui permettent d'aller
à la prochaine (resp. précédente) occurence du motif recherché à travers
tous les fichiers édités ? </strong>
</a>
<p>
Pour aller à l'occurence suivante (resp. précédente) d'un motif dans un
fichier, on utilise <code>n</code> (resp. <code>N</code>). Pour faire la même
opé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ère. <code>ESC</code> désigne bien sûr la touche d'échappement
(<code>Escape</code>).
</p>
</li>
<li>
<a name="less10" id="less10">
<strong>Comment chercher dans un fichier le caractère
<code>/</code> ?</strong>
</a>
<p>
Le caractère <code>/</code> sert à chercher un mot dans le fichier. Si on tape
</p>
<pre>
//
</pre>
<p><code>less</code> répond : <code>Pattern not found</code>. Il faut donc
dire à <code>less</code> de considérer le <code>/</code> comme un caractère
ordinaire, et pas comme un caractère spécial. Comme avec toutes les
expressions régulières, c'est le backslash (barre oblique vers la
gauche : <code>\</code>) qui sert à cela. Pour chercher un
<code>/</code>, on tape donc :
</p>
<pre>
/\/
</pre>
<p>La page de man donne une liste de caractères qui sont spéciaux avec
<code>/</code> et <code>?</code>. Ces commandes de recherche utilisent les
expressions régulières de <code>ed</code> (et de <code>vi</code> par
conséquent).
</p>
</li>
</ol>
<div class="metainformation">
Auteur : Émilia Robin, Joël Riou. Dernière modification : 2002-12-09 par Joël Riou.
</div>
</div>
</body>
</html>