Essayez ce qui suit :
less -R
de man less :
-rou--raw-control-charsProvoque l'affichage de caractères de contrôle "bruts". (...)
-Rou--RAW-CONTROL-CHARSComme
-r, mais seules les séquences d'échappement "couleur" ANSI sont sorties sous forme "brute". (...)
(mise à jour 2020)
Le moyen le plus rapide serait d'utiliser less -R réf. https://superuser.com/a/117842/34893
Vous pouvez utiliser la puissance de pygmentize avec moins - automatiquement ! (Pas besoin de piper à la main.)
Installer pygments avec votre gestionnaire de paquets ou pip (éventuellement appelé python-pygments ) ou obtenez-le ici http://pygments.org/download/.
Ecrire un fichier ~/.lessfilter
#!/bin/sh
case "$1" in
*.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
*.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
*.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
*.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
pygmentize -f 256 "$1";;
.bashrc|.bash_aliases|.bash_environment)
pygmentize -f 256 -l sh "$1";;
*)
if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
pygmentize -f 256 -l sh "$1"
else
exit 1
fi
esac
exit 0
Dans votre .bashrc ajouter
export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'
Aussi, vous devez faire ~/.lessfilter exécutable en exécutant
chmod u+x ~/.lessfilter
Testé sur Debian.
Vous avez eu l'idée. Cela peut bien sûr être encore amélioré, en acceptant plus d'extensions ou en analysant le shebang pour d'autres interprètes que bash. Voir quelques-unes des autres réponses pour cela.
L'idée est venue d'un ancien article de blog des créateurs de Pygments, mais l'article d'origine n'existe plus.
J'ai eu la réponse dans un autre article :Less and Grep :obtenir des résultats colorés lors de l'utilisation d'un tube de grep à less
Lorsque vous exécutez simplement
grep --colorcela impliquegrep --color=autoqui détecte si la sortie est un terminal et, si c'est le cas, active les couleurs. Cependant, lorsqu'il détecte un tuyau, il désactive la coloration. La commande suivante :grep --color=always "search string" * | less -RActivera toujours la coloration et remplacera la détection automatique, et vous obtiendrez la mise en surbrillance des couleurs en moins.
Attention :ne mettez pas --color=always en tant qu'alias, ça casse parfois les choses. C'est pourquoi il y a un --color=auto option.