# less

# Corrigé des exercices sur `less`

On aborde ici `less`, qui est une version plus élaborée de `more`; 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 `less` (qui est quand même très courant). `more` est beaucoup plus rudimentaire, alors que `less` 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.

1. Comment fait-on pour obtenir une page d'aide avec `less` ?

   On tape `h` ou `H` pour afficher une page d'aide. On s'y déplace comme dans `less` (flèches, `^D`, `^F`, `^B`, `^P`, `SPC`, `j`, `k`...). Pour quitter l'aide, ce sont les mêmes commandes que pour quitter `less` : `q`, `Q`, `:q`, `:Q`, `ZZ`.

2. Comment examiner plusieurs fichiers à la suite ? Comment passe-t-on au suivant ? Comment revient-on au précédent ?

   Il suffit de donner plusieurs fichiers en argument à la commande `less`; par exemple, pour examiner sucessivement les fichiers `toto`, `bla` et `blu`, on tape :

       less toto bla blu

   Pour passer au fichier suivant, on tape `:n` (next); pour revenir au fichier précédent, on tape `:p` (previous). `:x` permet de revenir au premier fichier spécifié.

3. Quelles sont les commandes différentes qui permettent de quitter `less` ?

   Ce sont : `q`, `Q`, `:q`, `:Q`, `ZZ`.

4. Comment dire à `less` d'ouvrir le fichier en plaçant en haut de l'écran la ligne n ?

   On spécifie le numéro de la ligne après le signe `+`; par exemple, pour ouvrir le fichier `rapport` sur la ligne 57, on tape :

       less +57 rapport

5. Comment dire à `less` d'ouvrir le fichier en plaçant en haut de l'écran la première ligne où apparaît un motif donné ?

   On utilise l'option `-p` de la commande `less`; par exemple, pour chercher le mot «toto» dans le fichier `rapport`, on tape :

       less -p toto rapport

   On peut aussi indiquer le motif recherché de la façon suivante :

       less +/toto rapport

6. Quelles sont les deux commandes de `less` qui permettent de chercher un motif dans un fichier, respectivement après et avant la position courante ?

   Pour chercher un motif plus en avant dans le texte, on utilise le slash (barre oblique vers la droite : `/`). Par exemple :

       /mot

   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 `n` (next). Pour aller à la précédente occurence du mot, il faut taper `N`. Évidemment, quand on cherche un motif avec `?`, `n` remonte dans le texte et `N` descend dans le texte.

   Une fois le début ou la fin du fichier atteint, la recherche s'arrête. On peut utiliser les expressions régulières.

7. Comment dire à `less` de chercher le mot à partir de la première ligne du fichier, et ce où que l'on soit dans le fichier ?

   Il faut taper `^F` après avoir tapé `/`. En fait, `^F` 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 `toto` alors qu'on se trouve à la fin du fichier, on tape :

       /^F

   Le prompt devient alors :

       First-file /

   et il n'y a plus qu'à taper le motif recherché.

8. Que se passe-t-il si l'on cherche le motif suivant : «toTo» en donnant l'option `-i` à `less` ? Quelle option faut-il mettre à la place de `-i` pour chercher `toTo` tout en ignorant la casse des caractères ?

   L'option `-i` signifie ignorecase, c'est-à-dire ignorer la casse des caractères (différence entre majuscules et minuscules). Si donc je tape (au choix) :

       less -ip TOTO rapport
       less -ip toto rapport
       less -i +/toto rapport
       less -i +/TOTO rapport

   `less` ne fera pas la différence entre les majuscules et les minuscules, et je trouverai `toto` comme `TOTO`. Bien sûr, c'est la même chose si je lance `less` avec l'option `-i` et que je cherche ensuite le mot à l'intérieur du fichier avec `/` ou `?`.

   Mais l'option `-i` est invalidée si le motif recherché contient des majuscules et des minuscules : si, en lançant `less` comme ci-dessus, je cherche le motif `Toto`, je ne trouverai que `Toto` et pas `TOTO` par exemple. Pour contourner cette restriction, il faut lancer `less` avec l'option `-I`, qui est donc un ignorecase «robuste».

9. Quelles sont les commandes qui permettent d'aller à la prochaine (resp. précédente) occurence du motif recherché à travers tous les fichiers édités ?

   Pour aller à l'occurence suivante (resp. précédente) d'un motif dans un fichier, on utilise `n` (resp. `N`). Pour faire la même opération mais sans passer manuellement de fichier en fichier, on tape `ESC n` pour chercher en avant, et `ESC N` pour chercher en arrière. `ESC` désigne bien sûr la touche d'échappement (`Escape`).

10. Comment chercher dans un fichier le caractère `/` ?

    Le caractère `/` sert à chercher un mot dans le fichier. Si on tape

        //

    `less` répond : `Pattern not found`. Il faut donc dire à `less` de considérer le `/` 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 : `\`) qui sert à cela. Pour chercher un `/`, on tape donc :

        /\/

    La page de man donne une liste de caractères qui sont spéciaux avec `/` et `?`. Ces commandes de recherche utilisent les expressions régulières de `ed` (et de `vi` par conséquent).

Auteur : Émilia Robin, Joël Riou. Dernière modification le 2002-12-08.