1 points par GN⁺ 2026-01-04 | 1 commentaires | Partager sur WhatsApp
  • Grâce aux nombreuses fonctionnalités de la commande less et à ses combinaisons de raccourcis, il est possible d’explorer des fichiers, rechercher, filtrer, poser des signets et basculer des options efficacement
  • On peut ouvrir plusieurs fichiers à la fois et naviguer, ajouter ou supprimer des fichiers avec les commandes :n, :p, :e, :d
  • Les fonctions de recherche (/, ?, n, N) et de filtrage (&, &!) permettent de trouver rapidement un motif précis ou de l’exclure
  • Les signets (m, ') et la fonction d’appariement des parenthèses simplifient les déplacements dans de longs documents ou des fichiers de code
  • Les bascules d’options en cours d’exécution (-S, -R, -N, etc.) et l’exécution de commandes externes (!) permettent d’ajuster immédiatement l’environnement sans quitter less

Gérer plusieurs fichiers

  • less n’est pas seulement un outil à utiliser en fin de pipeline : il peut aussi ouvrir directement plusieurs fichiers passés en argument
    • Exemple : less file1 file2 file3
  • Pendant l’exécution, on peut aussi ajouter un nouveau fichier avec la commande :e file.h
  • :n permet d’aller au fichier suivant, :p au fichier précédent, et :x ou :rewind de revenir au premier fichier
  • La commande :d permet de retirer le fichier courant de la liste

Fonctions de navigation

  • En saisissant un nombre + G, comme 3141G, on peut aller à un numéro de ligne précis
  • Avec un nombre + %, comme 75%, on peut sauter à une position en pourcentage dans le fichier
  • /motif lance une recherche vers l’avant, ?motif une recherche vers l’arrière, et n/N permettent d’aller au résultat suivant/précédent
    • !motif sert à trouver les lignes qui ne correspondent pas, * à rechercher à travers plusieurs fichiers, @ à démarrer la recherche depuis le premier fichier, et @* à rechercher dans l’ensemble de tous les fichiers

Fonctions de filtrage

  • &motif n’affiche que les lignes correspondant au motif, avec un comportement proche de grep en interne
  • &!motif n’affiche que les lignes ne correspondant pas au motif, ce qui est utile pour parcourir des fichiers de logs

Signets et appariement des parenthèses

  • m + une lettre permet de définir un signet, et ' + une lettre de revenir à cette position
    • Exemple : utiliser mo pour la section OPTIONS et me pour la section EXAMPLES, puis naviguer avec 'o et 'e
  • Si une parenthèse comme (, [, { se trouve sur la première ligne affichée, saisir cette parenthèse fait sauter vers la parenthèse correspondante
    • À l’inverse, si une parenthèse fermante se trouve sur la dernière ligne, on peut revenir à la parenthèse ouvrante
  • alt+ctrl+b, entre autres, permet de définir des paires de parenthèses personnalisées

Basculer des options et exécuter des commandes externes

  • Pendant l’exécution, saisir - suivi d’une option permet de modifier immédiatement la configuration
    • -S : activer/désactiver le retour à la ligne
    • -G : surlignage de recherche
    • -i/-I : réglage de la sensibilité à la casse
    • -R : affichage des couleurs ANSI
    • -N/-n : afficher/masquer les numéros de ligne
  • La commande ! permet d’exécuter une commande externe (!date, !bc, etc.)

Variables d’environnement et autres fonctions

  • Les options fréquemment utilisées peuvent être stockées dans la variable d’environnement $LESS
    • Exemple : LESS="-RNe" → affichage des couleurs, affichage des numéros de ligne, fermeture automatique en fin de fichier
  • La commande v permet d’ouvrir le fichier courant dans l’éditeur $VISUAL
  • Les commandes o ou O permettent d’enregistrer dans un fichier le contenu lu depuis l’entrée standard
  • less prend aussi en charge une fonction de saut vers des tags basée sur ctags, mais elle est peu utilisée

1 commentaires

 
GN⁺ 2026-01-04
Commentaires sur Hacker News
  • Étonnant que la fonctionnalité follow ait été oubliée. Au début, ça donne une UX un peu étrange, mais une fois habitué, c’est souvent plus pratique que tail
    Lancé avec less +F, cela suit en temps réel un flux d’entrée ou un fichier. Avec <C-c>, on arrête le suivi et on peut naviguer comme dans un less normal, puis appuyer de nouveau sur F (majuscule) pour reprendre le suivi

    • Lorsqu’on suit une entrée en pipe (kubectl logs | less +F), appuyer sur <C-c> termine tout le processus du pipe, ce qui empêche de reprendre le suivi avec F. less propose bien une alternative avec <C-x> pour arrêter le suivi, mais la plupart des shells interceptent cette touche
    • Avec tail, on peut appuyer sur Entrée pour ajouter une ligne vide sous la dernière ligne. Comme cela aide à distinguer les résultats de plusieurs exécutions, j’utilise encore tail rien que pour ça
    • Plutôt que « un peu étrange », je dirais que l’UX est mauvaise. Il ne devrait pas être nécessaire d’exiger un changement de mode ; ce serait mieux si l’affichage se rafraîchissait automatiquement quand de nouvelles données arrivent
    • J’aimerais un mode qui permette à la fois l’ajout automatique de nouvelles sorties et la navigation en parallèle. Un simple bascule d’auto-scroll comme dans un terminal devrait suffire
    • Avant, je pensais que le « follow » était une fonctionnalité complexe qui traitait les descripteurs de fichier de manière spéciale, mais en réalité, il s’agit simplement de continuer à sonder après EOF. Autrement dit, il n’y a pas de différence fondamentale entre l’ouverture normale d’un fichier et le mode follow, et un logiciel peut facilement passer de l’un à l’autre
  • Les options -X ou --no-init évitent d’effacer l’écran à la sortie. En général, je préfère garder l’écran affiché pour pouvoir relire ce qui précède ou faire du copier-coller

    • Si vous ne voulez utiliser le comportement de -X qu’occasionnellement, vous pouvez consulter l’astuce de ce fil
    • Avec -E, cela quitte immédiatement si la sortie est plus petite que la taille du terminal. J’utilise souvent la combinaison « less -SEXIER ». En plus, c’est facile à retenir
  • Quand je débogue de longs logs, j’utilise & pour filtrer uniquement ce que je veux lire, et &! pour exclure ce qui est inutile. Les expressions régulières sont aussi prises en charge. C’est parfois lent, mais pratique pour filtrer à la volée

  • Deux astuces utiles
    L’option -L saute le prétraitement du fichier d’entrée, ce qui évite qu’un fichier de log rotatif nommé logfile.1, logfile.2, etc. soit traité à tort comme du nroff
    De plus, lors d’une recherche, si l’on saisit Ctrl-R comme premier caractère, on peut rechercher une chaîne littérale plutôt qu’une regex

  • On peut configurer des raccourcis clavier avec le fichier ~/.lesskey. J’ai lié s au défilement vers l’arrière, ce qui me permet de faire page précédente/page suivante rapidement à une main avec d et s
    Le less par défaut de macOS n’a pas cette fonctionnalité, donc il faut l’installer via Homebrew (exemple de configuration, explication associée)

    • Moi aussi, j’associe N à next-file. L’absence de lesskey sur macOS est vraiment pénible
  • Le man d’OpenBSD transmet des tags à less, ce qui permet d’aller directement à une section précise avec :t test, par exemple. C’est une fonction intéressante, mais en pratique je ne l’utilise presque jamais.
    Une interface cohérente via une simple recherche avec / est plus intuitive.
    À noter que les BSD utilisent le jeu de macros mdoc pour produire une documentation sémantique, et qu’OpenBSD utilise le programme mandoc pour le rendu (documentation mdoc)

  • Avec ^q, on peut quitter less sans effacer l’écran, tandis que q garde son comportement habituel et efface l’écran à la sortie

    echo '^q toggle-option -redraw-screen\nq' >> ~/.config/lesskey
    

    Il faut lancer less sans -X, et c’est particulièrement utile avec git log, quand on a besoin de consulter la sortie précédente

  • less permet aussi de rediriger vers une commande externe.
    Par exemple, on peut poser un marqueur avec ma, puis utiliser |a pour envoyer à une commande externe le contenu entre la position actuelle et ce marqueur.
    C’est utile pour enregistrer une partie d’un article ou d’un e-mail.
    On peut aussi ajuster avec l’option -j le nombre de lignes entre le haut de l’écran et l’endroit où s’affiche un résultat de recherche

    • J’utilise aussi cette fonction de redirection avec git log. Après avoir sélectionné un commit, je lance git show avec un raccourci, ou j’effectue directement un fixup.
      J’utilise le debug trap de bash et keyd-application-mapper pour détecter la commande en cours d’exécution, extraire le hash du commit correspondant et le traiter avec un script
  • Le moteur de regex de less(1) est beaucoup trop lent. Sur de gros fichiers, je fais plutôt la recherche avec grep ou ripgrep, puis j’envoie le résultat vers less pour le consulter

  • La touche s permet d’enregistrer les données d’un pipe dans un fichier. C’est bien plus pratique que le copier-coller

    • J’utilise souvent cette fonction moi aussi. Je regarde la sortie d’un processus long dans less, puis je ne sauvegarde avec s que si le résultat est utile.
      On peut aussi utiliser tee, mais cela crée toujours un fichier, ce qui est inefficace quand on n’en a pas besoin