Có tệp cấu hình 'RC' cho grep / egrep không? (~ / .eginterc?)


37

Tôi thường làm một số grep khi phát triển và có một số tiện ích mở rộng mà tôi luôn không muốn tìm kiếm (như * .pyc).

Có thể tạo một ~ / .eginterc hoặc một cái gì đó tương tự, và đặt một số bộ lọc để luôn không hiển thị các tệp pyc trong kết quả.

Điều này là có thể, hoặc tôi sẽ phải tạo một bí danh để sử dụng grep theo cách này và gọi bí danh thay vì grep?

Câu trả lời:


66

Không có tệp RC cho grep, nhưng bạn có thể đặt biến môi trường GREP_OPTIONSthành danh sách tùy chọn được phân tách bằng khoảng trắng sẽ áp dụng cho tất cả các lệnh grep. Điều này đòi hỏi GNU grep (việc triển khai trên Linux, Cygwin và một số hệ thống khác không nhúng) 2.4; các --excludetùy chọn còn xa lạ với GNU grep 2.5. Đặt một cái gì đó như thế này trong của bạn ~/.profile:

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

Nếu bạn đã thực hiện việc này nhưng muốn chạy grep một lần mà không có các tùy chọn mặc định đó, bạn có thể ghi đè chúng (ví dụ: grep --color=nevertắt màu) hoặc làm trống GREP_OPTIONSbiến bằng cách chạy GREP_OPTIONS= grep ….

Một khả năng khác là xác định bí danh cho grep. Tôi sử dụng một biến thể sau đây:

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

1
Đây là câu trả lời tôi đang tìm kiếm. Tôi nghĩ rằng tôi sẽ đọc thêm về ~ / .profile. @Gilles, bạn là người đàn ông. Cảm ơn đã giúp đỡ!
Ai đó vẫn sử dụng bạn MS-DOS

1
Xem xét có hai possibilites để làm điều này (GREP_OPTIONS và bí danh grep): Là một trong số chúng được ưa thích? Tại sao hay tại sao không?
Christoph Wurm

4
@Legate: Một sự khác biệt quan trọng là GREP_OPTIONSsẽ ảnh hưởng đến grepcác cuộc gọi trong tập lệnh, trong khi bí danh sẽ không. Vì vậy, GREP_OPTIONSnên được sử dụng một cách tiết kiệm. Việc sử dụng phổ biến nhất là cho --color=auto, về nguyên tắc là vô hại trong các tập lệnh vì nó chỉ có hiệu lực nếu đầu ra là một thiết bị đầu cuối.
Gilles 'SO- ngừng trở nên xấu xa'

GREP_OPTIONS không được dùng nữa; vui lòng sử dụng bí danh hoặc tập lệnh
Steven Penny

3

ack có thể làm những gì bạn muốn và nhiều hơn nữa.

Nó sẽ bỏ qua tập tin nhị phân theo mặc định và bạn có thể nói với nó để bỏ qua các loại tệp khác như bạn muốn --notext, --nohtmlvv Nó có khả năng xác định một tập tin rc quá, do đó bạn có thể tùy chỉnh nó với các loại của riêng bạn.


Tôi cũng đang sử dụng ack, nhưng tôi không thích nó. Nó thực sự nhanh, nhưng nó không có sẵn trong tất cả các cài đặt, vì vậy tôi đã suy nghĩ về grep. Cảm ơn!
Ai đó vẫn sử dụng bạn MS-DOS

2
ack là một chương trình Perl duy nhất, có thể tải xuống dưới dạng tệp văn bản thuần túy. Nếu bạn muốn, bạn có thể truy cập betterthangrep.com/ack-standopol và cắt và dán nội dung vào một tệp. Tôi đặc biệt làm cho nó để nó có sẵn ở bất cứ đâu bạn có thể chạy Perl.
Andy Lester

0

Không phải là một câu trả lời trực tiếp cho câu hỏi của bạn. Nhưng grep có một tùy chọn để bỏ qua tất cả các tệp nhị phân bao gồm * .pyc. Tùy chọn là-I

grep -rI hello .

0

Không có trong GNU grep/ egrep, không có.

Bạn có thể muốn có một bí danh hoặc tập lệnh được đặt tên đặc biệt để thực hiện việc này, vì một ngày nào đó sau này bạn có thể thấy mình rất bối rối khi cố gắng tìm kiếm thứ gì đó mà bạn quên phù hợp với cấu hình đặc biệt của bạn.


3
GREP_OPTIONStrong ~/.profileđến gần.
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles - điểm tốt. Trong thực tế, tôi quên rằng tôi đã đặt nó cho chính mình --color=auto!
mattdm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.