Existe-t-il un fichier de configuration 'rc' pour grep / egrep? (~ / .egreprc?)

37

Je fais habituellement quelques grep lors du développement, et il y a des extensions que je ne veux pas toujours chercher (comme * .pyc).

Est-il possible de créer un ~ / .egreprc ou quelque chose comme ça, et de filtrer pour ne pas toujours montrer les fichiers pyc dans le résultat.

Est-ce possible ou devrais-je créer un alias pour utiliser grep de cette manière et appeler l'alias au lieu de grep?

Quelqu'un utilise encore vous MS-DOS
la source

Réponses:

66

Il n'y a pas de fichier rc pour grep, mais vous pouvez définir la variable d'environnement GREP_OPTIONSsur une liste d'options séparées par des espaces qui s'appliqueront à toutes les commandes grep. Cela nécessite GNU grep (l’implémentation sur Linux non intégré, Cygwin et certains autres systèmes) 2.4; l' --excludeoption est nouvelle pour GNU grep 2.5. Mettez quelque chose comme ça dans votre ~/.profile:

export GREP_OPTIONS='--color=auto --exclude=*.pyc --exclude-dir=.git'

Si vous avez déjà effectué cela, mais que vous souhaitez exécuter grep une fois sans ces options par défaut, vous pouvez les remplacer (par exemple, grep --color=neverpour désactiver les couleurs) ou vider la GREP_OPTIONSvariable en exécutant GREP_OPTIONS= grep ….

Une autre possibilité est de définir des alias pour grep. J'utilise une variante de ce qui suit:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'
Gilles, arrête de faire le mal
la source
1
C'est la réponse que je cherchais. Je pense que je vais en savoir plus sur ~ / .profile. @ Gilles, tu es l'homme. Merci pour ton aide!
Quelqu'un t'utilise encore MS-DOS le
1
Considérant qu’il existe deux possibilités pour le faire (GREP_OPTIONS et alias grep): L’un d’eux est-il préféré? Pourquoi ou pourquoi pas?
Christoph Wurm
4
@ Legate: Une différence importante est que GREP_OPTIONScela affectera les grepappels dans les scripts, contrairement à un alias. Donc, GREP_OPTIONSdevrait être utilisé avec parcimonie. L’utilisation la plus courante est for --color=auto, qui est en principe inoffensif dans les scripts car elle ne prend effet que si la sortie est un terminal.
Gilles, arrête de faire le mal
GREP_OPTIONS est obsolète; veuillez utiliser un alias ou un script
Steven Penny
3

ACK peut faire ce que vous voulez et plus encore.

Il ignore les fichiers binaires par défaut et vous pouvez lui dire d'ignorer les autres types de fichiers que vous voulez --notext, --nohtmletc. Il a la possibilité de définir un fichier rc trop de sorte que vous pouvez personnaliser avec vos propres types.

Mark McKinstry
la source
J'utilise aussi ack, mais je ne l'aimais pas. C'est en effet rapide, mais ce n'est pas disponible dans toutes les installations, donc je pensais à grep. Merci!
Quelqu'un vous utilise encore MS-DOS le
2
ack est un seul programme Perl, téléchargeable sous forme de fichier texte brut. Si vous le souhaitez, vous pouvez vous rendre sur betterthangrep.com/ack-standalone et couper / coller le contenu dans un fichier. Je l'ai spécialement conçu pour qu'il soit disponible partout où vous pouvez utiliser Perl.
Andy Lester
0

Pas une réponse directe à votre question. Mais grep a une option pour ignorer tous les fichiers binaires, y compris * .pyc. L'option est-I

grep -rI hello .
Tyler Long
la source
0

Pas dans GNU grep/ egrep, il n'y en a pas.

Vous souhaiterez probablement un alias ou un script spécialement nommé pour le faire, car un jour plus tard, vous pourriez vous trouver très confus en essayant de rechercher dans quelque chose que vous avez oublié correspond à votre configuration spéciale.

mattdm
la source
3
GREP_OPTIONSen ~/.profiles'approche.
Gilles, arrête de faire le mal '25
1
@ Gilles - bon point. En fait, j'ai oublié que je m'étais fixé cet objectif --color=auto!
Mattdm