Tùy chọn màu mặc định của Grep


11

grep là một trong những lệnh được sử dụng phổ biến nhất trong linux. Tôi cảm thấy rằng tính năng cơ bản của nó để làm nổi bật chuỗi bạn đã tìm kiếm trên các dòng đầu ra. điều này có thể đạt được bằng cách - tùy chọn màu.

Gõ - màu mỗi lần là khó chịu và cũng không hiệu quả. Có cách nào để thay đổi grep để hành xử như grep --color.

Tôi đã thử viết một tập lệnh nhỏ có tên là grepd và thêm nó vào biến PATH của tôi. Nhưng tập lệnh không hoạt động trên grepd đầu vào . Mọi góp ý xin vui lòng.

#!/bin/bash
grep --color $1 $2

Câu trả lời:


21

Chỉ cần thêm bí danh sau vào tệp cấu hình của shell của bạn, ví dụ .bashrchoặc .bash_profile(tùy thuộc vào loại bạn sử dụng, xem tại đây ):

alias grep='grep --color=auto'

Bạn chỉ có thể sử dụng nó như là grep.

Thường thì không cần phải tạo tập lệnh khi các bí danh lệnh đơn giản làm điều tương tự cũng tốt. Trong thực tế, kịch bản của bạn thậm chí sẽ không hoạt động nếu bạn muốn chuyển nhiều tùy chọn hơn grep. Trong trường hợp bạn cần một đoạn nhỏ có thể xử lý các đối số, bạn nên sử dụng các hàm .


9
Hoặc tương tự, đặt GREP_OPTIONSbiến môi trường:export GREP_OPTIONS='--color=always'
Jérôme

Điều này không thêm tùy chọn màu nếu bạn sử dụng fgrep hoặc egrep, bạn sẽ cần các bí danh riêng biệt cho những cái đó. Ngoài ra, @ Jérôme: GREP_OPTIONS được đánh dấu là không dùng nữa trong trang grep man.
Thayne

@Thayne chỉ dành cho GNU grep chứ không phải những người khác như FreerepD grep. Và theo như tôi có thể nói, đã 4 năm kể từ khi nó được thay đổi và nó vẫn được hỗ trợ. Khấu hao không có nghĩa là loại bỏ.
cde

Đây là những gì tôi thường làm, tuy nhiên nó không hoạt động đúng trong một số trường hợp. Ví dụ: some_command | xargs grep foosẽ không được tô màu vì xargs không sử dụng bí danh.
TM.

2
#!/bin/sh
exec grep --color "$@"

Điều này minh họa cách tiêu chuẩn "gói" một lệnh bằng một tập lệnh shell, khi lệnh không hoàn toàn hoạt động theo cách bạn muốn.

Các exectránh tạo ra một quá trình phụ (một cho kịch bản và một cho grep). Bạn có thể bỏ nó ra nếu bạn thích.

Điều "$@"này được thay thế bởi tất cả các đối số của tập lệnh, bất kể có bao nhiêu. Nó bảo tồn chính xác các đối số với khoảng trắng và các ký tự khác đặc biệt cho trình bao.


"Exec grep" phải là "exec / bin / grep"
Berend de Boer

2
@BerenddeBoer Không thực sự. "exec grep" sẽ hoạt động tốt. Không có gì sai khi tìm kiếm đường dẫn cho grep.
Kenster

-1

hãy thử đặt export GREP_COLORS='AUTO'~ / .bashrc của bạn - đối với tôi nó hoạt động.

từ man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

5
GREP_COLORSlà thiết lập màu sắc thực tế. Cài đặt AUTOkhông nên hiển thị bất kỳ màu nào. export GREP_OPTIONS = '- color = auto' sẽ là câu trả lời.
dùng137369
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.