LESSPIPE.SH(1) Commandes de l'utilisateur LESSPIPE.SH(1) NOM lesspipe.sh -- Un filtre pour less(1) SYNOPSIS lesspipe.sh [FICHIER[S]]... DESCRIPTION lesspipe.sh a pour but d'ameliorer la sortie de less(1). C'est le contenu du fichier qui determine le choix des regles a appliquer pour modifier la sortie. L'extension de nom de fichier n'est prise en compte qu'en dernier recours. lesspipe.sh est en general appele en tant que filtre d'entree pour less(1). Grace a ce filtre, less(1) va pouvoir afficher le contenu decompresse des fichiers compresses par gzip, bzip2, compress, zstd, lz4, lzip, xz, lzma ou brotli. Pour les fichiers contenant des archives et des repertoires, une table des matieres sera affichee (formats tar, ar, zip, 7-zip, rar, jar, cpio, rpm, deb ms-cabinet, iso, appimage et snap). De nombreux autres types de fichier seront reformates 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 etre installes. Le filtre peut aussi etre applique recursivement pour extraire et afficher les fichiers d'une archive a la volee. Cette operation fonctionne jusqu'a une profondeur de 6, l'application d'un algorithme de decompression comptant comme un niveau separe. Si l'utilitaire file(1) indique du texte avec un codage different de celui utilise dans le terminal, le texte sera converti vers le codage par defaut a l'aide de iconv(1). Pour que cela fonctionne, la commande file(1) doit extraire le codage du fichier de maniere correcte, ce qui n'est pas toujours le cas. L'ajout d'un deux-points (:) au nom de fichier desactive la conversion. Les programmes git(1), vim(1) ou mutt(1) peuvent lire des fichiers non-texte en utilisant lesspipe.sh. Pour plus de details, consultez le Wiki a https://github.com/wofr06/lesspipe/wiki. ACTIVATION DU FILTRE Le filtre est invoque depuis less(1) a condition que la variable d'environnement LESSOPEN soit correctement definie. Pour les interpreteurs 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 definir LESSOPEN peut aussi etre affichee en invoquant lesspipe.sh sans argument. Il est ainsi possible de definir LESSOPEN directement : eval `lesspipe.sh` (bash(1)) ou lesspipe.sh|source /dev/stdin (zsh(1)) Les commandes ci-avant ne fonctionnent de la maniere decrite que si le nom de fichier est lesspipe.sh. Si ce dernier a ete installe sous un nom different, son invocation sans argument fonctionnera comme un filtre avec LESSQUIET definie et attendant des donnees en entree sur STDIN. Une fois la variable d'environnement definie comme decrit ci-avant, less(1) affichera des informations au format texte pour une grande variete de formats de fichier. Le filtre n'est en general pas invoque si l'entree de less(1) est un tube comme dans cat fichier | less Comme indique dans la page de manuel de less(1), le filtrage dans le cas d'un tube peut tout de meme etre force en prefixant LESSOPEN par les caracteres << |- >>. Prefixer LESSOPEN par les deux caracteres << || >> pour gerer les fichiers vides et les erreurs de commande n'est que partiellement implemente ; en general, en cas d'echec d'une commande au sein de lesspipe.sh, les messages d'erreur sont affiches. Definir la variable d'environnement LESSQUIET a une valeur non vide permet de supprimer les messages d'information dans la premiere ligne de sortie du filtre. Pour desactiver temporairement le filtre, un deux-points << : >> peut etre ajoute a la fin du nom de fichier. Si le nom de fichier contient un deux-points, un signe egal << = >> devra etre utilise a la place. Fichiers HTML, XML et Perl POD Les fichiers au format html, xml ou perl pod sont toujours correctement affiches. Cependant, il sera parfois plutot souhaitable de visualiser le contenu original du fichier. Pour ce faire, comme indique ci-avant, ajouter un deux-points a la fin du nom de fichier. Si le type de fichier correct (html, xml, pod) suit, la sortie pourra etre coloree (voir aussi la section ci-apres). Exemple : less index.html:html Si le binaire xmq est installe, le format xml sera rendu differemment de sorte que la structure xml soit mieux reconnue. Un affichage similaire pour le format html est effectue en ajoutant un deux-points a 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 evidence en la colorant pour de nombreux types de fichier. nvimpager(1) sera utilise pour colorer la sortie, s'il est installe. A defaut, 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 theme est defini a << ansi >> et le style a << plain >>, dont l'aspect est similaire a la sortie non filtree de less(1). Ces reglages peuvent etre redefinis dans ~/.config/bat/config ou a l'aide des variables d'environnement BAT_STYLE et BAT_THEME. Il est possible de forcer l'utilisation d'un programme de coloration en definissant la variable d'environnement LESSCOLORIZER avec le nom du programme choisi. Pour pygmentize(1) et bat(1)/batcat(1), des definitions d'option restreintes sont autorisees comme suit : LESSCOLORIZER='pygmentize -O style=un_style' (-P est aussi autorise) LESSCOLORIZER='bat --style=foo --theme=un_theme' (par defaut, le theme est << ansi >> et le style << plain >>) La coloration syntaxique est activee si la variable d'environnement LESS existe et contient l'option -R ou si less(1) a ete invoque avec cette option, ce qui garantit que les sequences d'echappement seront converties en couleurs et n'introduiront pas de << dechets >> dans l'affichage. Utiliser l'option -r est deconseille, car l'affichage a l'ecran pourrait en etre fausse si la sortie contient des lignes de grande longueur. Si la sortie est coloree, la mise en evidence de la syntaxe peut etre desactivee en ajoutant un deux-points (:) a 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 a la fin du nom de fichier. Cette methode ne peut pas etre utilisee dans le cas d'un tube. La solution consiste alors a ajouter un dernier argument qui sera inspecte par lesspipe.sh. Un deux-points seul (desactiver le filtre) ou << :extension >> (forcer un langage) peut etre ajoute comme dans l'exemple suivant : commande qui genere du code c | less - :c Lorsque les conditions necessaires a la coloration syntaxique sont reunies, les listages des contenus de repertoire et de fichier tar sont aussi colores. less(1) etant utilise comme navigateur par defaut par certains programmes (comme man(1), git(1) et perldoc(1)), il est possible que lesspipe.sh soit invoque et altere la sortie de ces programmes. VISUALISER LA CROISSANCE DES FICHIERS Des que lesspipe.sh fait appel a un programme pour convertir l'entree, la possibilite de visualiser la croissance des fichiers (en utilisant la commande F pendant l'execution de less(1)) est perdue. Ce type de visualisation est souvent souhaite pour les fichiers journaux comme syslog. Pour desactiver temporairement lesspipe.sh, un deux-points (:) doit etre ajoute en tant que dernier argument de less(1) comme dans l'exemple suivant : less /var/log/syslog : less(1) peut aussi etre invoque avec l'argument +F, ce qui equivaut a l'execution de la commande F pendant l'execution de less(1) : less +F /var/log/syslog Ajouter un deux-points au nom de fichier ne fonctionne pas, car le filtre doit alors etre invoque 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 etre forcee en ajoutant << :.log >> a la fin du nom de fichier comme dans l'exemple suivant : less /var/log/syslog:.log UTILISATION AVANCEE Cette version de lesspipe.sh permet de visualiser des fichiers contenus dans une archive qui peut elle-meme etre contenue dans une autre archive. La syntaxe permettant de visualiser des fichiers dans une archive multifichier est less archive:fichier ou meme less super_archive:archive:fichier Pour visualiser le dernier fichier de la chaine dans son format brut, un deux-points doit etre ajoute a la fin du nom de fichier. Si ce nom contient lui-meme un deux-points, le signe egal (=) devra etre utilise comme caractere separateur de remplacement. Une fois encore, cette methode d'extraction et de visualisation d'un fichier ne fonctionne pas si l'entree de less(1) est un tube et si LESSOPEN commence par les caracteres << |- >>. Comme pour la coloration syntaxique, la solution consiste a utiliser un second argument qui commence par un deux-points << : >>. La commande de l'exemple precedent s'ecrira alors cat super_archive | less - :archive:fichier MECANISME DE COMPLETION POUR LE CONTENU DES ARCHIVES Il est possible d'effectuer une completion 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 egal << = >> apres un nom d'archive puis presser la touche tabulation declenche le mecanisme de completion. Cette methode fonctionne aussi pour les archives chainees. Les fichiers lesscomplete et less_completion doivent se trouver dans un des repertoires listes dans $PATH et la fonction _less pour zsh(1) dans un repertoire liste dans $fpath. Le script less_completion doit etre invoque depuis un script d'initialisation de bash(1), par exemple ~/.bashrc. De nouveaux repertoires tels que ~/scripts et ~/.fpath peuvent etre ajoutes a l'aide des commandes PATH=~/scripts:$PATH et fpath=(~/.fpath $fpath) FILTRAGE DEFINI PAR L'UTILISATEUR Le filtrage lesspipe.sh peut etre ameliore ou remplace par un programme defini par l'utilisateur. Un tel programme doit avoir pour nom .lessfilter (et etre place dans le repertoire personnel de l'utilisateur) ou lessfilter (et etre accessible depuis un repertoire liste dans $PATH). Il doit etre executable et quitter avec un code de retour de 0 si le filtrage a ete effectue dans ce script. Dans le cas contraire, un code de retour different de zero signifiera que le filtrage est confie a lesspipe.sh. Ce mecanisme permet d'ajouter des filtres pour de nouveaux formats ou, par exemple, de desactiver le filtrage pour certains types de fichier. AUTEUR Wolfgang Friebel SIGNALER DES BOGUES Envoyez vos rapports de bogue a . COPYRIGHT Copyright (C) 2005-2024 Wolfgang Friebel C'est un logiciel libre ; consultez les sources pour les conditions de copie. Il n'y a AUCUNE garantie ; meme pas de VALEUR MARCHANDE ou d'ADEQUATION A UNE UTILISATION PARTICULIERE. VOIR AUSSI less(1) Une description de lesspipe.sh se trouve aussi dans le fichier README contenu dans le paquet source. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Lucien Gentis Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . lesspipe.sh Aout 2024 LESSPIPE.SH(1)