Lorsque je lance un programme (par exemple grep
ou ls
) sans pageur, sa sortie est colorée. Cependant, lorsque je l'exécute en canalisant sa sortie less
, aucune couleur n'est affichée.
Par exemple, cette commande génère une sortie colorée:
grep -r something
mais cela ne veut pas:
grep -r something | less
Pourquoi? Comment voir les couleurs à travers less
?
command-line
less
Mohammad Reza Rezwani
la source
la source
grep --color=always "search string" * | less -R
mais j'ai tendance à utiliser demost
nos jours au lieu deless
. AUSSI: gnu.org/software/src-highlite est un surligneur de couleur (moins fonctionne aussi)python-pygments
?Réponses:
Ici, nous avons deux problèmes:
ls
—quelles détectent automatiquement la prise en charge des couleurs — ne trouvent pas la prise en charge des tuyauxless
est défini pour afficher uniquement les codes de couleur par défaut.Les deux peuvent être surmontés mais c'est un peu maladroit:
Ce n'est pas
ls
spécifique. De nombreuses commandes qui prennent en charge la couleur ont également un argument de remplacement.Une réponse un peu plus approfondie
ls
consiste à vérifier si son STDOUT appartient ou non à un vrai terminal. Lorsque vous redirigez des éléments, le STDOUT est défini sur le STDIN de la commande suivante.Vous pouvez le voir à l'œuvre dans le
ls
code source . Il utilise laisatty
commande (une interface POSIX de base) pour déterminer la situation:Les couleurs sont-elles activées par défaut:
Essayons-nous de produire dans plusieurs colonnes:
grep
fait une chose très similaire, sauf si elle est explicitement remplacée, elle détectera la prise en charge des couleurs, avecisatty
:la source
--color
argument:ack-grep -i select --color | less -R
-C
argument.Si vous êtes intéressé par les couleurs en
less
général, vous voudrez peut-être regarderlesspipe.sh
. Voir, par exemple, http://freecode.com/projects/lesspipe .Il coloriera également les scripts shell, les scripts perl, etc. de manière similaire à un éditeur de texte, mais sans utiliser de programme de "prétraitement" pour effectuer la colorisation.
la source