LESSPIPE.SH(1)

NOM
lesspipe.sh — Un filtre pour less(1)

SYNOPSIS
lesspipe.sh [FICHIER[S]]...

DESCRIPTION

lesspipe.sh a pour but d’améliorer la sortie de less(1). C’est le contenu du fichier qui détermine le choix des règles à appliquer pour modifier la sortie. L’extension de nom de fichier n’est prise en compte qu’en dernier recours. lesspipe.sh est en général appelé en tant que filtre d’entrée pour less(1).

Grâce à ce filtre, less(1) va pouvoir afficher le contenu décompressé des fichiers compressés par gzip, bzip2, compress, zstd, lz4, lzip, xz, lzma ou brotli. Pour les fichiers contenant des archives et des répertoires, une table des matières sera affichée (formats tar, ar, zip, 7-zip, rar, jar, cpio, rpm, deb ms-cabinet, iso, appimage et snap). De nombreux autres types de fichier seront reformatés avant affichage. Il s’agit des formats des suites pdf, dvi, markdown, Office (MS et Openoffice) et des formats NetCDF, matlab, device tree blob, html, xml et media (image, audio et video). Pour que ce filtrage fonctionne, des programmes d’assistance doivent être installés.

Le filtre peut aussi être appliqué récursivement pour extraire et afficher les fichiers d’une archive à la volée. Cette opération fonctionne jusqu’à une profondeur de 6, l’application d’un algorithme de décompression comptant comme un niveau séparé.

Si l’utilitaire file(1) indique du texte avec un codage différent de celui utilisé dans le terminal, le texte sera converti vers le codage par défaut à l’aide de iconv(1). Pour que cela fonctionne, la commande file(1) doit extraire le codage du fichier de manière correcte, ce qui n’est pas toujours le cas. L’ajout d’un deux-points (:) au nom de fichier désactive la conversion.

Les programmes git(1), vim(1) ou mutt(1) peuvent lire des fichiers non-texte en utilisant lesspipe.sh. Pour plus de détails, consultez le Wiki à https://github.com/wofr06/lesspipe/wiki.

ACTIVATION DU FILTRE
Le filtre est invoqué depuis less(1) à condition que la variable d’environnement LESSOPEN soit correctement définie. Pour les interpréteurs de commande de style ksh (bash(1), zsh(1)), la commande
    LESSOPEN="|lesspipe.sh %s"; export LESSOPEN
active le filtre pour less(1). Utilisez un chemin absolu si lesspipe.sh ne se trouve pas dans le chemin de recherche. La commande permettant de définir LESSOPEN peut aussi être affichée en invoquant lesspipe.sh sans argument. Il est ainsi possible de définir LESSOPEN directement :
    eval `lesspipe.sh` (bash(1)) ou
    lesspipe.sh|source /dev/stdin (zsh(1))
Les commandes ci-avant ne fonctionnent de la manière décrite que si le nom de fichier est lesspipe.sh. Si ce dernier a été installé sous un nom différent, son invocation sans argument fonctionnera comme un filtre avec LESSQUIET définie et attendant des données en entrée sur STDIN.

Une fois la variable d’environnement définie comme décrit ci-avant, less(1) affichera des informations au format texte pour une grande variété de formats de fichier.

Le filtre n’est en général pas invoqué si l’entrée de less(1) est un tube comme dans
    cat fichier | less
Comme indiqué dans la page de manuel de less(1), le filtrage dans le cas d’un tube peut tout de même être forcé en préfixant LESSOPEN par les caractères « |- ».

Préfixer LESSOPEN par les deux caractères « || » pour gérer les fichiers vides et les erreurs de commande n’est que partiellement implémenté ; en général, en cas d’échec d’une commande au sein de lesspipe.sh, les messages d’erreur sont affichés.

Définir la variable d’environnement LESSQUIET à une valeur non vide permet de supprimer les messages d’information dans la première ligne de sortie du filtre.

Pour désactiver temporairement le filtre, un deux-points « : » peut être ajouté à la fin du nom de fichier. Si le nom de fichier contient un deux-points, un signe égal « = » devra être utilisé à la place.

Fichiers HTML, XML et Perl POD
Les fichiers au format html, xml ou perl pod sont toujours correctement affichés. Cependant, il sera parfois plutôt souhaitable de visualiser le contenu original du fichier. Pour ce faire, comme indiqué ci-avant, ajouter un deux-points à la fin du nom de fichier. Si le type de fichier correct (html, xml, pod) suit, la sortie pourra être colorée (voir aussi la section ci-après).

    Exemple : less index.html:html

Si le binaire xmq est installé, le format xml sera rendu différemment de sorte que la structure xml soit mieux reconnue. Un affichage similaire pour le format html est effectué en ajoutant un deux-points à la fin du nom de fichier. Pour obtenir le contenu original du fichier html, deux deux-points sont alors requis.

COLORATION DE LA SORTIE
Le filtre peut mettre la syntaxe en évidence en la colorant pour de nombreux types de fichier. nvimpager(1) sera utilisé pour colorer la sortie, s’il est installé. À défaut, on se rabattra sur les programmes bat(1)/batcat(1), pygmentize(1), source-highlight(1), vimcolor(1) ou code2color. Pour bat(1)/batcat(1), le thème est défini à « ansi » et le style à « plain », dont l’aspect est similaire à la sortie non filtrée de less(1). Ces réglages peuvent être redéfinis dans ~/.config/bat/config ou à l’aide des variables d’environnement BAT_STYLE et BAT_THEME.

Il est possible de forcer l’utilisation d’un programme de coloration en définissant la variable d’environnement LESSCOLORIZER avec le nom du programme choisi. Pour pygmentize(1) et bat(1)/batcat(1), des définitions d’option restreintes sont autorisées comme suit :
    LESSCOLORIZER='pygmentize -O style=un_style' (-P est aussi autorisé)
    LESSCOLORIZER='bat --style=foo --theme=un_thème' (par défaut, le thème est « ansi » et le style « plain »)
La coloration syntaxique est activée si la variable d’environnement LESS existe et contient l’option -R ou si less(1) a été invoqué avec cette option, ce qui garantit que les séquences d’échappement seront converties en couleurs et n’introduiront pas de « déchets » dans l’affichage. Utiliser l’option -r est déconseillé, car l’affichage à l’écran pourrait en être faussé si la sortie contient des lignes de grande longueur.

Si la sortie est colorée, la mise en évidence de la syntaxe peut être désactivée en ajoutant un deux-points (:) à la fin du nom de fichier. Si le langage pris en compte pour la coloration syntaxique n’est pas le bon, il est possible d’en forcer un autre en ajoutant un deux-points et un suffixe à la fin du nom de fichier.

Cette méthode ne peut pas être utilisée dans le cas d’un tube. La solution consiste alors à ajouter un dernier argument qui sera inspecté par lesspipe.sh. Un deux-points seul (désactiver le filtre) ou « :extension » (forcer un langage) peut être ajouté comme dans l’exemple suivant :
    commande qui génère du code c | less - :c

Lorsque les conditions nécessaires à la coloration syntaxique sont réunies, les listages des contenus de répertoire et de fichier tar sont aussi colorés.

less(1) étant utilisé comme navigateur par défaut par certains programmes (comme man(1), git(1) et perldoc(1)), il est possible que lesspipe.sh soit invoqué et altère la sortie de ces programmes.

VISUALISER LA CROISSANCE DES FICHIERS
Dès que lesspipe.sh fait appel à un programme pour convertir l’entrée, la possibilité de visualiser la croissance des fichiers (en utilisant la commande F pendant l’exécution de less(1)) est perdue. Ce type de visualisation est souvent souhaité pour les fichiers journaux comme syslog. Pour désactiver temporairement lesspipe.sh, un deux-points (:) doit être ajouté en tant que dernier argument de less(1) comme dans l’exemple suivant :
    less /var/log/syslog :
less(1) peut aussi être invoqué avec l’argument +F, ce qui équivaut à l’exécution de la commande F pendant l’exécution de less(1) :
    less +F /var/log/syslog
Ajouter un deux-points au nom de fichier ne fonctionne pas, car le filtre doit alors être invoqué pour au moins supprimer ce deux-points et utiliser cat(1) pour le fichier original. En outre, il est possible de colorer les fichiers journaux non croissants en utilisant ccze(1). La reconnaissance d’un fichier en tant que journal est difficile si son nom ne se termine pas par « .log », mais peut être forcée en ajoutant « :.log » à la fin du nom de fichier comme dans l’exemple suivant :
    less /var/log/syslog:.log

UTILISATION AVANCÉE
Cette version de lesspipe.sh permet de visualiser des fichiers contenus dans une archive qui peut elle-même être contenue dans une autre archive.

La syntaxe permettant de visualiser des fichiers dans une archive multifichier est
    less archive:fichier
ou même
    less super_archive:archive:fichier
Pour visualiser le dernier fichier de la chaîne dans son format brut, un deux-points doit être ajouté à la fin du nom de fichier. Si ce nom contient lui-même un deux-points, le signe égal (=) devra être utilisé comme caractère séparateur de remplacement.

Une fois encore, cette méthode d’extraction et de visualisation d’un fichier ne fonctionne pas si l’entrée de less(1) est un tube et si LESSOPEN commence par les caractères « |- ». Comme pour la coloration syntaxique, la solution consiste à utiliser un second argument qui commence par un deux-points « : ». La commande de l’exemple précédent s’écrira alors
    cat super_archive | less - :archive:fichier

MÉCANISME DE COMPLÉTION POUR LE CONTENU DES ARCHIVES
Il est possible d’effectuer une complétion des noms de fichier par tabulation au sein d’une archive en utilisant les fichiers lesscomplete (pour zsh(1) et bash(1)), _less (pour zsh(1)) et less_completion (pour bash(1)). Taper un deux-points « : » ou un signe égal « = » après un nom d’archive puis presser la touche tabulation déclenche le mécanisme de complétion. Cette méthode fonctionne aussi pour les archives chaînées. Les fichiers lesscomplete et less_completion doivent se trouver dans un des répertoires listés dans $PATH et la fonction _less pour zsh(1) dans un répertoire listé dans $fpath. Le script less_completion doit être invoqué depuis un script d’initialisation de bash(1), par exemple ~/.bashrc. De nouveaux répertoires tels que ~/scripts et ~/.fpath peuvent être ajoutés à l’aide des commandes
    PATH=~/scripts:$PATH et fpath=(~/.fpath $fpath)

FILTRAGE DÉFINI PAR L’UTILISATEUR
Le filtrage lesspipe.sh peut être amélioré ou remplacé par un programme défini par l’utilisateur. Un tel programme doit avoir pour nom .lessfilter (et être placé dans le répertoire personnel de l’utilisateur) ou lessfilter (et être accessible depuis un répertoire listé dans $PATH). Il doit être exécutable et quitter avec un code de retour de 0 si le filtrage a été effectué dans ce script. Dans le cas contraire, un code de retour différent de zéro signifiera que le filtrage est confié à lesspipe.sh.

Ce mécanisme permet d’ajouter des filtres pour de nouveaux formats ou, par exemple, de désactiver le filtrage pour certains types de fichier.

AUTEUR
Wolfgang Friebel

SIGNALER DES BOGUES
Envoyez vos rapports de bogue à <wp.friebel AT gmail DOT com>.

COPYRIGHT
Copyright © 2005-2024 Wolfgang Friebel
C'est un logiciel libre ; consultez les sources pour les conditions de copie. Il n'y a AUCUNE garantie ; même pas de VALEUR MARCHANDE ou d'ADÉQUATION À UNE UTILISATION PARTICULIÈRE.

VOIR AUSSI
less(1)

Une description de lesspipe.sh se trouve aussi dans le fichier README contenu dans le paquet source.

TRADUCTION
La traduction française de cette page de manuel a été créée par Lucien Gentis <lucien.gentis@univ-lorraine.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.