Quand je lis un fichier sous Linux avec la commande less
o more
comment puis-je obtenir le contenu en couleurs ?
Réponses
Trop de publicités?Pour développer une autre réponse, vous pouvez faire en sorte que cela fonctionne pour la plupart, si ce n'est tous vos scripts qui n'ont pas d'extensions en modifiant un peu le 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"
;;
*)
scriptExec=$(head -1 "$1" |grep "^#\!" |awk -F" " '{print $1}')
scriptExecStatus=$?
if [ "$scriptExecStatus" -eq "0" ]; then
lexer=$(echo $scriptExec |awk -F/ '{print $NF}')
pygmentize -f 256 -l $lexer "$1"
else
exit 1
fi
esac
exit 0
Vous devrez quand même ajouter les deux variables au fichier .bashrc :
export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'
Et vous aurez toujours besoin de rendre .lessfilter exécutable :
$ chmod 700 ~/.lessfilter
Je voulais aussi ajouter que sous debian le paquet pygments s'appelle Python-pygments. J'ai eu du mal à le localiser au début parce que la mauvaise orthographe évidente de "pigments" en "pygments" n'était pas un indice suffisant pour me faire comprendre qu'il s'agissait d'un paquet qui pourrait être préfixé par "Python-" par le gestionnaire de paquets.
J'ai trouvé cette solution simple et élégante. Vous n'avez pas besoin d'installer quoi que ce soit d'autre car elle est déjà présente par défaut sur la plupart des machines. Comme vim
est installé par défaut sur la plupart des machines, il inclut une macro pour exécuter vim
comme less
Certaines des options pour l'utiliser sont de créer un alias : alias vless='vim -u /usr/share/vim/vim74/macros/less.vim'
ou créer un lien symbolique : ln -s /usr/share/vim/vim74/macros/less.sh ~/bin/vless
Ensuite, il suffit de lancer vless myfile.py
J'ai obtenu la plupart des informations aquí
La solution la plus intuitive et la plus directe pour moi était d'utiliser pygmentize
en ajoutant les lignes ci-dessous au fichier .bashrc
export LESS='-R'
export LESSOPEN='|pygmentize -g %s'
Au cas où vous ne pourriez pas appeler pygmentize
il suffit d'installer comme
pip install pygments
ps. Le site pygmentize
Le binaire exécutable se trouverait dans /usr/local/bin/
ou dans votre /home/username/.virtualenv/venvname/bin/
ou quelque part.
6 votes
Cela semble lié : superuser.com/questions/36022/less-et-grep-color - Est-ce que ça aide ?
10 votes
Le titre de cette question est très trompeur. De nombreuses personnes arrivant sur cette page s'attendent à trouver une solution au problème de coloration que vous rencontrez lorsque tuyauterie une commande avec une sortie colorée vers
less
: les couleurs sont perdues. (Les réponses à ce "problème de tuyauterie" impliquentless -R
,unbuffer
etc.) Mais la vraie question porte sur ouverture d'un fichier ! - L'ambiguïté réside principalement dans le titre de la question, mais même en dehors de cela, IMHO la question est encore trop large : "lire un fichier" pourrait se référer à tout (probablement du texte brut). (enfin, "obtenir le contenu en couleurs" fait probablement référence à la coloration syntaxique).0 votes
Je dois me corriger, seulement 3 (ou 4) des 14 réponses ne répondent pas à la question réelle du PO : les réponses de ChristopheD , Puneet y Onlyjob ; et peut-être jbbr . Pourtant, deux de ces réponses font partie des trois réponses les plus votées.
0 votes
@myrdd "syntax highlighting" est le terme pertinent alors... (Il s'agit d'afficher des couleurs, pas d'en ajouter ?)
less -R
fonctionnera également sur les fichiers, par ex.ls --color=always > /tmp/file && less -R /tmp/file
0 votes
@GertvandenBerg Je pense que le PO voulait dire " comment obtenir la coloration syntaxique dans
less
omore
lorsque le fichier ouvert ne contient PAS de codes d'échappement ". Mais je ne piense en il voulait dire ça, je ne le sais pas. - Au fait, je ne suis pas d'accord avec votre interprétation de la question. La question dit " Lorsque je lis un fichier [ ] "et par "fichier", je suis sûr que le PO voulait dire une typique un fichier en clair, ou un fichier "normal". Un fichier en clair "typique" (ou un fichier "normal") contient-il des caractères d'échappement, c'est-à-dire des couleurs ? Non. Donc, selon moi, la question est sur l'"ajout" de couleurs (ou de coloration syntaxique).2 votes
@myrdd Il serait peut-être plus logique que la question soit fermée en tant que "ce qui est demandé n'est pas clair" puisque les questions posant l'une ou l'autre de ces deux questions seraient probablement marquées comme des doublons de celle-ci... (Et les réponses à l'une ou l'autre de ces deux questions peuvent être rétrogradées en fonction de la façon dont le votant les interprète...) (Mon cas d'utilisation était un fichier journal qui (fâcheusement) contient des codes d'échappement de couleur).
0 votes
@GertvandenBerg Je suis d'accord. J'ai déjà voté pour la fermeture de la question.
0 votes
Il semble qu'il s'agisse d'un doublon de superuser.com/q/71588/105108 .