• =?UTF-8?Q?un_less_qui_pr=C3=A9serve_les_couleurs_de_sortie_dans_le_?= =

    From =?UTF-8?Q?Beno=C3=AEt_Barbier?=@21:1/5 to All on Thu Feb 13 12:40:01 2025
    Bonjour,

    Il y a plusieurs sorties de terminal qui sont coloriées comme ls, grep,
    apt, mais dès que je « passe » par less avec un « | » la mise en évidence des couleurs disparaît.

    ex :
    grep -r "^# TODO" *.py | less

    Y a-t-il un remplaçant de less pour garder la couleur de sortie des commandes(grep dans ce cet exemple) ?

    En gardant la possibilité qu'offre less de voyager et faire une nouvelle recherche dans le résultat :
    Ex :
    /le truc à faire

    Merci

    Benoît

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Basile Starynkevitch@21:1/5 to All on Thu Feb 13 13:50:01 2025
    On Thu, 2025-02-13 at 12:38 +0100, Benoît Barbier wrote:
    Bonjour,

    Il y a plusieurs sorties de terminal qui sont coloriées comme ls, grep, apt, mais dès que je « passe » par less avec un « | » la mise en évidence des couleurs disparaît.


    Sous Linux, un logiciel applicatif (notamment ceux qui sont libres) peut tester si la sortie standard est un terminal par la fonction http://manpagesfr.free.fr/man/man3/isatty.3.html

    Et il existe des conventions d'échappement pour coloriser: https://en.wikipedia.org/wiki/ANSI_escape_code

    La plupart des commandes bien écrites vont avant d'utiliser ces codes d'échappement tester si la sortie est un terminal virtuel les supportant.


    Par ailleurs, Les biblothèques d'interface graphique comme www.gtk.org or www.fltk.org ou www.fox-toolkit.org tous comme les navigateurs web graphiques (firefox, dillo.org, ...) savent tous gérer la couleur.

    Mais quand on redirige la sortie d'une commande dans un tube ou un fichier (par exemple ls -lR > /tmp/liste-fichier ou find -size +100 | cut -F1 ...) on veut généralement ne pas avoir de couleurs.

    Donc c'est logique et fréquent qu'une commande envoyée dans un tube n'utilise pas les échappements de colorisation (convenablement codée elle utiliserait isatty).

    D'ailleurs le compilateur GCC (en https://gcc.gnu.org/ ....) ou Ocaml (en https://ocaml.org/ ...) ne colorise les messages d'erreurs que depuis quelques années (en interne en utilisant isatty(FILENO_STDOUT) voir https://stackoverflow.com/q/36258224/841108 et https://stackoverflow.com/a/40346447/841108 ...)

    Un moteur d'inférences comme https://clipsrules.net/ (ou http://refpersys.org/ ....) ne colorise pas ses messages, car il pourrait, comme beaucoup de commandes, être utilisé ailleurs que dans un terminal (par exemple lancé par crontab ou batch ou at). https://www.linuxtricks.fr/wiki/at-planifier-des-taches-ulterieurement

    Les shells Linux usuels (cf zsh.org ou GNU bash) peuvent coloriser, à condition
    d'utiliser la commande https://man7.org/linux/man-pages/man1/printf.1.html ou de
    faire les codes d'échappement à la main. Debian fournit le paquet zsh-syntax- highlighting et il existe aussi https://fishshell.com/ qui le fait.

    les supercalculateurs (cf https://top500.org/ ....) sont généralement utilisés
    sans couleur dans leur sortie. Par exemple ceux de https://meteofrance.com/ ou du https://www.cea.fr/ (où j'ai travaillé).

    On peut toutefois taper: ls --color|less pour voir les séquences d'échappement
    couleur et avec ls --color | less -r on voir les couleurs elles-même


    https://man7.org/linux/man-pages/man1/less.1.html

    https://man7.org/linux/man-pages/man1/ls.1.html


    Cordialement


    --
    Basile STARYNKEVITCH <basile@starynkevitch.net>
    8 rue de la Faïencerie
    92340 Bourg-la-Reine, France
    http://starynkevitch.net/Basile & https://github.com/bstarynk
    & https://github.com/RefPerSys/RefPerSys/

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)