Apakah ada file konfigurasi 'rc' untuk grep / egrep? (~ / .egreprc?)


37

Saya biasanya melakukan beberapa grep ketika mengembangkan, dan ada beberapa ekstensi yang saya selalu tidak ingin mencari (seperti * .pyc).

Apakah mungkin untuk membuat ~ / .egreprc atau sesuatu seperti itu, dan menempatkan beberapa penyaringan untuk selalu tidak menampilkan file pyc di hasilnya.

Apakah ini mungkin, atau apakah saya harus membuat alias untuk menggunakan grep dengan cara ini, dan memanggil alias alih-alih grep?

Jawaban:


66

Tidak ada file rc untuk grep, tetapi Anda dapat mengatur variabel lingkungan GREP_OPTIONSke daftar opsi yang dipisahkan spasi yang akan berlaku untuk semua perintah grep. Ini membutuhkan GNU grep (implementasi pada Linux yang tidak tertanam, Cygwin dan beberapa sistem lainnya) 2.4; yang --excludepilihan baru untuk GNU grep 2,5. Tempatkan sesuatu seperti ini di ~/.profile:

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

Jika Anda telah melakukan ini tetapi ingin menjalankan grep satu kali tanpa opsi-opsi default itu, Anda dapat menimpanya (mis. grep --color=neverUntuk memaksa warna mati) atau mengosongkan GREP_OPTIONSvariabel dengan menjalankan GREP_OPTIONS= grep ….

Kemungkinan lain adalah mendefinisikan alias untuk grep. Saya menggunakan varian berikut ini:

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

1
Ini adalah jawaban yang saya cari. Saya pikir saya akan membaca lebih lanjut tentang ~ /. Profil. @Gilles, kaulah pria itu. Terima kasih telah membantu!
Seseorang masih menggunakan Anda MS-DOS

1
Mempertimbangkan ada dua kemungkinan untuk melakukan ini (GREP_OPTIONS dan alias grep): Apakah salah satu dari mereka lebih disukai? Mengapa atau mengapa tidak?
Christoph Wurm

4
@Legate: Perbedaan penting adalah yang GREP_OPTIONSakan memengaruhi greppanggilan dalam skrip, sedangkan alias tidak. Jadi GREP_OPTIONSharus digunakan hemat. Penggunaan yang paling umum adalah untuk --color=auto, yang pada prinsipnya tidak berbahaya dalam skrip karena hanya berlaku jika output adalah terminal.
Gilles 'SO- stop being evil'

GREP_OPTIONS sudah usang; silakan gunakan alias atau skrip
Steven Penny

3

ACK dapat melakukan apa yang Anda inginkan dan banyak lagi.

Ini akan mengabaikan file biner secara default dan Anda dapat mengatakan itu untuk mengabaikan tipe file lain yang Anda inginkan --notext, --nohtml, dll memiliki kemampuan untuk menentukan file rc juga sehingga Anda dapat menyesuaikannya dengan jenis Anda sendiri.


Saya menggunakan ack juga, tetapi saya tidak menyukainya. Memang cepat, tetapi tidak tersedia di semua instalasi, jadi saya berpikir tentang grep. Terima kasih!
Seseorang masih menggunakan Anda MS-DOS

2
ack adalah program Perl tunggal, dapat diunduh sebagai file teks biasa. Jika mau, Anda dapat mengunjungi betterthangrep.com/ack-standalone dan memotong & menempel konten ke dalam file. Saya secara khusus membuatnya sehingga tersedia di mana saja Anda dapat menjalankan Perl.
Andy Lester

0

Bukan jawaban langsung untuk pertanyaan Anda. Tetapi grep memiliki opsi untuk mengabaikan semua file biner termasuk * .pyc. Pilihannya adalah-I

grep -rI hello .

0

Tidak di GNU grep/ egrep, tidak ada.

Anda mungkin ingin alias atau skrip khusus untuk melakukan ini, karena suatu hari nanti Anda mungkin akan merasa sangat bingung ketika mencoba mencari sesuatu yang Anda lupa cocok dengan konfigurasi khusus Anda.


3
GREP_OPTIONSdi ~/.profiledekat.
Gilles 'SO- stop being evil'

1
@Gilles - poin bagus. Bahkan, saya lupa bahwa saya telah mengatur sendiri --color=auto!
mattdm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.