Nếu tôi sử dụng hai grep
lệnh liên tiếp , ví dụ:
echo "foo bar" | grep foo | grep bar
Sau đó, mẫu đầu tiên ("foo") không được tô sáng. Trong thực tế, có vẻ như grep loại bỏ mã màu khỏi đầu vào của nó. Có cách nào để ngăn chặn điều này?
Nếu tôi sử dụng hai grep
lệnh liên tiếp , ví dụ:
echo "foo bar" | grep foo | grep bar
Sau đó, mẫu đầu tiên ("foo") không được tô sáng. Trong thực tế, có vẻ như grep loại bỏ mã màu khỏi đầu vào của nó. Có cách nào để ngăn chặn điều này?
Câu trả lời:
Sử dụng --color=always
.
grep
phát hiện nếu đầu ra là một đường ống (hoặc tập tin). Bạn hầu như không bao giờ muốn màu sắc khi đầu ra là tập tin - vì đó là chuỗi thoát cho thiết bị đầu cuối. Điển hình là:
foo ^[[01;31m^[[Kbar^[[m^[[K
từ ví dụ:
grep pattern file > result
Để ghi đè sử dụng --color=always
.
grep --color=always pattern file | ...
Thí dụ:
Có tập tin:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
Sau đó
grep --color=always ID file | grep --color=always 2013 | grep foo
sẽ tô màu ID
, 2013
và foo
.
grep --color=always ID file | grep 2013 | grep foo
sẽ tô màu ID
và foo
, nhưng không phải 2013
.
1 Quan trọng: Bạn cũng phải nhớ rằng sự lộn xộn được thêm vàotừ màu sắc được chuyển sang lệnh tiếp theo trong chuỗi. Khi ID được màu, bạn có thể không (một cách dễ dàng), phù hợp với ví dụID=111
.
Trong một số trường hợp, người ta có thể muốn màu thiết bị đầu cuối trong tập tin . Hãy thử ví dụ
grep --color=always foo file > result
cat result
Mặc dù các tập tin kết quả sẽ có tính di động rất hạn chế.
Bản thân màu cũng là một phần mở rộng.
Như được đề cập bởi @slm tốt , bạn có thể thêm:
export GREP_OPTIONS="--color=always"
.bashrc
vv của bạn , nhưng không trừ khi bạn vì một số lý do thực sự hiểu ý nghĩa và vẫn muốn làm điều đó. Nó sẽ bị phá vỡ theo nhiều cách grep
do thực tế đã đề cập ở trên 1 .
Thêm một alias
nếu bạn sử dụng nó thường xuyên.
alias cgrep='grep --color=always'
GREP_OPTIONS
và --color
mất ba tùy chọn : never
, auto
và always
. Hai người đầu tiên nên là người duy nhất được xem xét cho GREP_OPTIONS
.
Bạn cũng có thể kiểm tra GREP_COLORS
trong các man
trang hoặc tại gnu grep .
export GREP_OPTIONS="--color=always"
trong một .bashrc làm cho các tùy chọn mặc định cho bất kỳ greps nào và bạn đã đóng đinh nó khá nhiều!
ls
và gnu coreutils.