Essayez ce qui suit :
less -R
de man less
:
-r
ou--raw-control-chars
Provoque l'affichage de caractères de contrôle "bruts". (...)
-R
ou--RAW-CONTROL-CHARS
Comme
-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 --color
cela impliquegrep --color=auto
qui 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 -R
Activera 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.