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
MODIFIER:
Je cherche une solution directe ou quelque chose d'équivalent à ceci.
Lorsque vous exécutez simplement grep --color
, cela implique grep --color=auto
qui détecte si la sortie est un terminal et, le cas échéant, active les couleurs. Cependant, lorsqu'il détecte un tuyau, il désactive la coloration. La commande suivante:
grep --color=always -R "search string" * | less
Permettra toujours d'activer la coloration et d'ignorer la détection automatique. La couleur sera alors surlignée dans less
.
EDIT: Bien que l’utilisation de less
ne fonctionne que pour moi, une version plus ancienne nécessite peut-être le drapeau -R
pour gérer les couleurs, comme suggéré ici.
Vous pouvez mettre ceci dans votre fichier .bashrc
:
export GREP_OPTIONS="--color=always"
ou créez un alias comme ceci:
alias grepc="grep --color=always"
et vous devrez utiliser l'option -R
pour less
, comme indiqué par la suite
Dans ce cas, je préfère créer de petits fichiers sh et les mettre sur /usr/local/bin
.
J'utilise habituellement grep
de manière récursive sur pwd
, c'est donc mon script personnel:
#!/bin/sh
grep --color=always -r "$@" . | less -R
Et puis je viens de le copier en tant que /usr/local/bin/g
(oui, je l’utilise beaucoup)
Ne pas alias "grep", mais alias "moins" qui n’est jamais utilisé par les shells. Dans votre .bashrc
, mettez simplement: alias less="less -r"
.
J'ai besoin de courir
grep --color=always -R "search string" * | less - r
avec le drapeau -r après moins , pour que cela fonctionne.