¿Existe un archivo de configuración 'rc' para grep / egrep? (~ / .egreprc?)

37

Por lo general, hago algo de grep cuando desarrollo, y hay algunas extensiones que siempre no quiero buscar (como * .pyc).

¿Es posible crear un ~ / .egreprc o algo así y poner algo de filtro para no mostrar siempre los archivos pyc como resultado?

¿Es esto posible, o tendré que crear un alias para usar grep de esta manera, y llamar al alias en lugar de grep?

Alguien todavía te usa MS-DOS
fuente

Respuestas:

66

No hay un archivo rc para grep, pero puede configurar la variable de entorno GREP_OPTIONSen una lista de opciones separadas por espacios en blanco que se aplicarán a todos los comandos grep. Esto requiere GNU grep (la implementación en Linux no incorporado, Cygwin y algunos otros sistemas) 2.4; La --excludeopción es nueva para GNU grep 2.5. Ponga algo como esto en su ~/.profile:

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

Si ha hecho esto pero desea ejecutar grep una vez sin esas opciones predeterminadas, puede anularlas (por ejemplo, grep --color=neverpara forzar la desactivación de los colores) o vaciar la GREP_OPTIONSvariable ejecutando GREP_OPTIONS= grep ….

Otra posibilidad es definir alias para grep. Yo uso una variante de lo siguiente:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'
Gilles 'SO- deja de ser malvado'
fuente
1
Esta es LA respuesta que estaba buscando. Creo que leeré más sobre ~ / .profile. @Gilles, eres el hombre. ¡Gracias por ayudar!
Alguien todavía te usa MS-DOS
1
Teniendo en cuenta que hay dos posibilidades para hacer esto (GREP_OPTIONS y alias grep): ¿Se prefiere uno de ellos? ¿Por qué o por qué no?
Christoph Wurm
44
@Legate: una diferencia importante es que GREP_OPTIONSafectará las grepllamadas en los scripts, mientras que un alias no lo hará. Por GREP_OPTIONSlo tanto, debe usarse con moderación. El uso más común es for --color=auto, que en principio es inofensivo en los scripts porque solo tiene efecto si la salida es un terminal.
Gilles 'SO- deja de ser malvado'
GREP_OPTIONS está en desuso; utilice un alias o guión
Steven Penny
3

ack puede hacer lo que quieras y más.

Se ignorará los archivos binarios de forma predeterminada y se puede decir que hacer caso omiso de otros tipos de archivos como desee --notext, --nohtml, etc Tiene la capacidad de definir un fichero rc también, así que se puede personalizar con sus propios tipos.

Mark McKinstry
fuente
También estoy usando ack, pero no me gustó. De hecho, es rápido, pero no está disponible en todas las instalaciones, así que estaba pensando en grep. ¡Gracias!
Alguien todavía te usa MS-DOS
2
ack es un único programa Perl, descargable como un archivo de texto sin formato. Si quieres puedes ir a betterthangrep.com/ack-standalone y cortar y pegar el contenido en un archivo. Lo hice específicamente para que esté disponible en cualquier lugar donde pueda ejecutar Perl.
Andy Lester
0

No es una respuesta directa a tu pregunta. Pero grep tiene una opción para ignorar todos los archivos binarios, incluido * .pyc. La opcion es-I

grep -rI hello .
Tyler Long
fuente
0

No en GNU grep/ egrep, no lo hay.

Probablemente desee un alias o script especialmente nombrado para hacer esto de todos modos, porque algún día más tarde podría encontrarse muy confundido al intentar buscar algo que olvidó que coincide con su configuración especial.

mattdm
fuente
3
GREP_OPTIONSen ~/.profilese acerca.
Gilles 'SO- deja de ser malvado'
1
@Gilles: buen punto. De hecho, ¡olvidé que tengo eso para mí --color=auto!
mattdm