Existe um arquivo de configuração 'rc' para grep / egrep? (~ / .egreprc?)


37

Normalmente, faço grep durante o desenvolvimento e há algumas extensões que eu sempre não quero procurar (como * .pyc).

É possível criar um ~ / .egreprc ou algo assim, e colocar alguma filtragem para sempre não mostrar arquivos pyc no resultado.

Isso é possível ou terei que criar um alias para usar o grep dessa maneira e chamar o alias em vez de grep?

Respostas:


66

Não há arquivo rc para grep, mas você pode definir a variável de ambiente GREP_OPTIONScomo uma lista de opções separadas por espaços em branco que serão aplicadas a todos os comandos grep. Isso requer o GNU grep (a implementação em Linux não incorporado, Cygwin e alguns outros sistemas) 2.4; a --excludeopção é nova no GNU grep 2.5. Coloque algo assim em seu ~/.profile:

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

Se você fez isso, mas deseja executar o grep uma vez sem essas opções padrão, você pode substituí-las (por exemplo, grep --color=neverpara forçar o desligamento das cores) ou esvaziar a GREP_OPTIONSvariável executando GREP_OPTIONS= grep ….

Outra possibilidade é definir aliases para grep. Eu uso uma variante do seguinte:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'

11
Esta é a resposta que eu estava procurando. Acho que vou ler mais sobre ~ / .profile. @Gilles, você é o homem. Obrigado por ajudar!
Alguém ainda usa o MS-DOS

11
Considerando que há duas possibilidades para fazer isso (GREP_OPTIONS e alias grep): Uma delas é preferida? Por que ou por que não?
Christoph Wurm

4
@ Legate: Uma diferença importante é que GREP_OPTIONSafetará as grepchamadas em scripts, enquanto um alias não. Portanto, GREP_OPTIONSdeve ser usado com moderação. O uso mais comum é para --color=auto, o que é, em princípio, inofensivo nos scripts, porque só produz efeito se a saída for um terminal.
Gilles 'SO- stop be evil'

GREP_OPTIONS está obsoleto; utilize um alias ou script
Steven Penny

3

O ack pode fazer o que você quiser e muito mais.

Ele irá ignorar arquivos binários por padrão e você pode dizer a ele para ignorar outros tipos de arquivos como você quer --notext, --nohtmletc. Ele tem a capacidade de definir um arquivo rc também, então você pode personalizá-lo com seus próprios tipos.


Também estou usando ack, mas não gostei. É realmente rápido, mas não está disponível em todas as instalações, então eu estava pensando em grep. Obrigado!
Alguém ainda usa o MS-DOS

2
O ack é um único programa Perl, que pode ser baixado como um arquivo de texto sem formatação. Se desejar, acesse o site betterthangrep.com/ack-standalone e recorte e cole o conteúdo em um arquivo. Eu fiz especificamente para que ele esteja disponível em qualquer lugar em que você possa executar o Perl.
Andy Lester

0

Não é uma resposta direta à sua pergunta. Mas o grep tem uma opção para ignorar todos os arquivos binários, incluindo * .pyc. A opção é-I

grep -rI hello .

0

Não no GNU grep/ egrep, não existe.

Você provavelmente deseja que um alias ou script especialmente nomeado faça isso de qualquer maneira, porque um dia depois você poderá se sentir muito confuso ao tentar procurar algo que você esqueceu coincidir com sua configuração especial.


3
GREP_OPTIONSem ~/.profilechega perto.
Gilles 'SO- stop be evil'

11
@ Gilles - bom ponto. Na verdade, eu esqueci que tenho isso para mim --color=auto!
mattdm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.