J'utilise beaucoup l'option --colour de grep, mais j'utilise aussi souvent moins. Comment puis-je diriger les résultats de grep vers moins tout en préservant la coloration? (Ou est-ce possible?)
grep "search-string" -R * --colour | less
EDIT :
Je cherche une solution directe ou quelque chose d'équivalent à ceci.
*
-il? De la page de manuel de grep:*: The preceding item will be matched zero or more times.
Mais je ne comprends toujours pas ..! @ JeremyPowellRéponses:
Lorsque vous l'exécutez simplement,
grep --color
cela implique degrep --color=auto
savoir si la sortie est un terminal et, le cas échéant, d'activer les couleurs. Cependant, lorsqu'il détecte un tuyau, il désactive la coloration. La commande suivante:Permettra toujours coloration et passer outre la détection automatique, et vous obtiendrez la couleur de surbrillance dans
less
.EDIT: Bien que l’utilisation ne
less
fonctionne que pour moi, une version plus ancienne nécessite peut-être le-R
drapeau pour gérer les couleurs, comme suggéré ici.la source
less -R
pour le codage des couleurs pour être interprété par moins correctementless
, cela peut dépendre de la version.grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R
, ce qui a parfaitement répondu à mes besoins. (Merci encore!)less
et ont donc manqué l'occasion d'avoir uncolorless
outil spécial . Pour le seul nom, cela aurait dû être fait! Je devrais probablement écrire un patch qui appelle -R automatiquement lorsque le binaire est exécuté en tant quecolorless
.$LESS
réglé avec-R
.Vous pouvez mettre ceci dans votre
.bashrc
dossier:ou créez un alias comme ceci:
et vous aurez besoin d'utiliser l'
-R
option pourless
, comme indiqué par làla source
grep
avecGREP
ou remplacer l’--color
option manuellement.Dans ce cas, je préfère créer et mettre en place de petits fichiers sh
/usr/local/bin
.J'utilise habituellement
grep
de manière récursive sur lapwd
, c'est donc mon script personnel:Et puis je viens de le copier comme
/usr/local/bin/g
(oui, je l’utilise beaucoup)la source
g() { grep --color=always -r "$@" . | less -R }
fonctionne de manière identique et donnera probablement (minutieusement) de meilleures performances.Ne pas alias "grep", mais alias "moins" qui n’est jamais utilisé par les shells. Dans votre
.bashrc
vient de mettre:alias less="less -r"
.la source
grep --color=always
etless -R
. Notez que grep sait seulement qu'il est transféré dans un autre processus et l'--color=auto
option utilise uniquement cette information pour décider si les couleurs seront affichées ou non.less
option-r
est différente de-R
. C'est probablement-R
plus sûr.less
avec l'exemple en utilisant déjà l'option `--color '.less
prend en charge une$LESS
variable d'environnement. Donc, au lieu d'un alias,export LESS='-R'
pourrait être préférable.J'ai besoin de courir
avec le drapeau -r après less , pour que cela fonctionne.
la source
*
-il? De la page de manuel de grep:*: The preceding item will be matched zero or more times.
Mais je ne comprends toujours pas ..!