Esiste un file di configurazione 'rc' per grep / egrep? (~ / .Egreprc?)


37

Di solito faccio un po 'grep durante lo sviluppo, e ci sono alcune estensioni che non voglio sempre cercare (come * .pyc).

È possibile creare un ~ / .egreprc o qualcosa del genere e mettere un po 'di filtro per non mostrare sempre i file pyc nel risultato.

È possibile, o dovrò creare un alias per usare grep in questo modo e chiamare l'alias invece di grep?

Risposte:


66

Non esiste un file rc per grep, ma è possibile impostare la variabile di ambiente GREP_OPTIONSsu un elenco di opzioni separato da spazi bianchi che verrà applicato a tutti i comandi grep. Ciò richiede GNU grep (l'implementazione su Linux non incorporato, Cygwin e alcuni altri sistemi) 2.4; l' --excludeopzione è nuova per GNU grep 2.5. Inserisci qualcosa di simile nel tuo ~/.profile:

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

Se lo hai fatto ma vuoi eseguire grep una volta senza quelle opzioni predefinite, puoi sovrascriverle (ad esempio grep --color=neverper forzare i colori) o svuotare la GREP_OPTIONSvariabile eseguendo GREP_OPTIONS= grep ….

Un'altra possibilità è quella di definire gli alias per grep. Uso una variante di quanto segue:

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

1
Questa è la risposta che stavo cercando. Penso che leggerò di più su ~ / .profile. @Gilles, tu sei l'uomo. Grazie dell'aiuto!
Qualcuno usa ancora il tuo MS-DOS il

1
Considerando che ci sono due possibilità per farlo (GREP_OPTIONS e alias grep): uno è preferito? Perché o perché no?
Christoph Wurm,

4
@Legate: un'importante differenza è che GREP_OPTIONSinfluenzerà le grepchiamate negli script, mentre un alias no. Quindi GREP_OPTIONSdovrebbe essere usato con parsimonia. L'uso più comune è per --color=auto, che è in linea di principio innocuo negli script perché ha effetto solo se l'output è un terminale.
Gilles 'SO- smetti di essere malvagio' il

GREP_OPTIONS è obsoleto; per favore usa un alias o una sceneggiatura
Steven Penny,

3

ack può fare quello che vuoi e altro ancora.

Si ignorerà i file binari per impostazione predefinita e si può dire che di ignorare gli altri tipi di file che si desidera --notext, --nohtmlecc Ha la capacità di definire un file rc troppo così è possibile personalizzare con i tuoi propri tipi.


Sto usando anche ack, ma non mi è piaciuto. È davvero veloce, ma non è disponibile in tutte le installazioni, quindi stavo pensando a grep. Grazie!
Qualcuno usa ancora il tuo MS-DOS il

2
ack è un singolo programma Perl, scaricabile come un semplice file di testo. Se vuoi, puoi andare su betterthangrep.com/ack-standalone e tagliare e incollare il contenuto in un file. L'ho creato appositamente per renderlo disponibile ovunque tu possa eseguire Perl.
Andy Lester,

0

Non è una risposta diretta alla tua domanda. Ma grep ha un'opzione per ignorare tutti i file binari incluso * .pyc. L'opzione è-I

grep -rI hello .

0

Non in GNU grep/ egrep, non c'è.

Probabilmente vuoi che un alias o uno script con un nome speciale lo faccia comunque, perché un giorno dopo potresti ritrovarti molto confuso quando provi a cercare qualcosa che hai dimenticato corrisponde alla tua configurazione speciale.


3
GREP_OPTIONSa ~/.profilesi avvicina.
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles - buon punto. In effetti, ho dimenticato di averlo impostato per me --color=auto!
Mattdm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.