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)