Sửa đổi màu của grep


23

Khi tôi grep một cái gì đó, kết quả luôn luôn là màu đỏ. Tôi biết rằng lệnh grep --colorin kết quả bằng màu, theo mặc định là màu đỏ. Tôi có thể thay đổi màu sắc không?

Câu trả lời:


18

Bạn có thể thay đổi màu tô sáng grepbằng cách sử dụng biến môi trường GREP_COLORSmà bạn có thể đặt như sau:

export GREP_COLORS='ms=01;31'

Tùy chọn số

Các số có thể định kiểu văn bản, thay đổi màu nền trước hoặc màu nền hoặc thay đổi phông chữ.

Các điều kiện bắt đầu cho tất cả các GREP_COLORStùy chọn là kiểu văn bản, phông chữ và màu sắc mặc định của thiết bị đầu cuối. Đặt lại bất kỳ trong số này sẽ trở lại mặc định của thiết bị đầu cuối, không phải bất kỳ grepmặc định nào.

Huyền thoại

  • ;ʙ;- ;tách tùy chọn số mà bạn muốn kết hợp (ví dụ, đậm màu vàng trên nền đen liên hợp gặt đập văn bản tùy chọn 1, 3340vào 1;33;40)
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ được bật khi bạn sử dụng tùy chọn số
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛ bị tắt khi bạn sử dụng tùy chọn số
  • color, green, cyan, Và grey- trong phần "Nội dung phong", những tham khảo các màu foreground
  • colors - trong phần "Kiểu văn bản", phần này đề cập đến cả màu nền trước và màu nền
  • this color- trong phần "Màu tiền cảnh", phần này đề cập đến màu nền trước; trong phần "Màu nền", phần này đề cập đến màu nền

Kiểu văn bản

Một chuỗi trống hoặc 0đặt lại tất cả kiểu dáng văn bản và đặt lại cả hai màu về mặc định nhưng không đặt lại phông chữ về mặc định.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal          ┃ xterm                   ┃ non-GUI TTY           ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│     │ «reset style+colors»    │ «reset style+colors»    │ «reset style+colors»  │
│   0 │ «reset style+colors»    │ «reset style+colors»    │ «reset style+colors»  │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│   1 │ +bold, +brighter color  │ +bold, +brighter color  │ +brighter color,      │
│     │                         │                         │   -forced grey        │
│   2 │ +fainter color          │ +fainter color          │ +forced grey          │
│   3 │ +italic                 │ +italic                 │ +forced green         │
│     │                         │                         │   ● overrides 2 and 4 │
│   4 │ +underline              │ +underline              │ +forced cyan          │
│     │                         │                         │   ● overrides 2       │
│   5 │ «no effect»             │ +blink                  │ «no effect»           │
│   7 │ +invert colors          │ +invert colors          │ +invert colors        │
│   8 │ +invisible              │ +invisible              │ «no effect»           │
│     │                         │   ● underline appears   │                       │
│   9 │ +strikethrough          │ +strikethrough          │ «no effect»           │
├─────┼─────────────────────────┤                         ├───────────────────────┤
│  21 │ -bold, -brighter color, │ +double underline       │ -brighter color,      │
│     │   -fainter color        ├─────────────────────────┤   -forced grey        │
│  22 │ -bold, -brighter color, │ -bold, -brighter color, │ -brighter color,      │
│     │   -fainter color        │   -fainter color        │   -forced grey        │
│  23 │ -italic                 │ -italic                 │ -forced green         │
│  24 │ -underline              │ -underline,             │ -forced cyan          │
│     │                         │   -double underline     │                       │
│  25 │ «no effect»             │ -blink                  │ «no effect»           │
│  27 │ -invert colors          │ -invert colors          │ -invert colors        │
│  28 │ -invisible              │ -invisible              │ «no effect»           │
│  29 │ -strikethrough          │ -strikethrough          │ «no effect»           │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

Màu sắc tiền cảnh

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal          ┃ xterm                   ┃ non-GUI TTY           ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│  39 │ «reset this color»      │ «reset this color»      │ «reset this color»    │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│  30 │ very dark grey          │ black                   │ black                 │
│  31 │ dull red                │ red                     │ light red             │
│  32 │ dull green              │ light green             │ light green           │
│  33 │ dull yellow             │ yellow                  │ yellow                │
│  34 │ greyish blue            │ dark blue               │ sky blue              │
│  35 │ dull purple             │ purple                  │ purple                │
│  36 │ teal                    │ cyan                    │ cyan                  │
│  37 │ light grey              │ light grey              │ light grey            │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│  90 │ dark grey               │ dull grey               │ dull grey             │
│  91 │ red                     │ bright red              │ bright red            │
│  92 │ lime green              │ bright green            │ bright green          │
│  93 │ yellow                  │ bright yellow           │ pure yellow           │
│  94 │ light greyish blue      │ dull blue               │ deep blue             │
│  95 │ light purple            │ magenta                 │ magenta               │
│  96 │ cyan                    │ bright cyan             │ bright cyan           │
│  97 │ off white               │ white                   │ white                 │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 38;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255                  │
│            │   for closest supported color (non-GUI TTY has only 16 colors!)    │
│ 38;5;ɴ     │ replace ɴ with value from 256-color chart below                    │
│            │   for closest supported color (non-GUI TTY has only 16 colors!)    │
└────────────┴────────────────────────────────────────────────────────────────────┘

Màu nền

Lưu ý rằng TTY không GUI không cung cấp chuỗi màu nền sáng hơn.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal          ┃ xterm                   ┃ non-GUI TTY           ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│  49 │ «reset this color»      │ «reset this color»      │ «reset this color»    │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│  40 │ very dark grey          │ black                   │ black                 │
│  41 │ dull red                │ red                     │ light red             │
│  42 │ dull green              │ light green             │ light green           │
│  43 │ dull yellow             │ yellow                  │ yellow                │
│  44 │ greyish blue            │ dark blue               │ sky blue              │
│  45 │ dull purple             │ purple                  │ purple                │
│  46 │ teal                    │ cyan                    │ cyan                  │
│  47 │ light grey              │ light grey              │ light grey            │
├─────┼─────────────────────────┼─────────────────────────┼╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶┤
│ 100 │ dark grey               │ dull grey               │ black                 │
│ 101 │ red                     │ bright red              │ light red             │
│ 102 │ lime green              │ bright green            │ light green           │
│ 103 │ yellow                  │ bright yellow           │ yellow                │
│ 104 │ light greyish blue      │ dull blue               │ sky blue              │
│ 105 │ light purple            │ magenta                 │ purple                │
│ 106 │ cyan                    │ bright cyan             │ cyan                  │
│ 107 │ off white               │ white                   │ light grey            │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 48;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255                  │
│            │   for closest supported color (non-GUI TTY has only 8 colors!)     │
│ 48;5;ɴ     │ replace ɴ with value from 256-color chart below                    │
│            │   for closest supported color (non-GUI TTY has only 8 colors!)     │
└────────────┴────────────────────────────────────────────────────────────────────┘

Biểu đồ 256 màu

Biểu đồ 256 màu

Biểu đồ trên là ảnh chụp màn hình nội dung được xuất bản trong "Mã thoát ANSI, màu 8 bit" trên Wikipedia , được tác giả bởi CMG Lee et al. vào ngày 24 tháng 2 năm 2016 trở điđược các tác giả cấp phép theo cả giấy phép bản quyền CC BY-SA 3.0giấy phép bản quyền của GFDL .

Màu sắc từ biểu đồ 256 màu ở trên có thể được sử dụng như sau:

  • 38;5;ɴ- thay thế ɴ bằng giá trị của một màu cụ thể trong biểu đồ trên để thay đổi màu nền trước thành màu gần nhất mà thiết bị đầu cuối hỗ trợ
  • 48;5;ɴ- thay thế ɴ bằng giá trị của một màu cụ thể trong biểu đồ trên để thay đổi màu nền thành màu gần nhất mà thiết bị đầu cuối hỗ trợ

Ví dụ, 38;5;214;48;5;30sẽ đặt tiền cảnh thành màu 214và nền thành màu 30, mang lại kết quả màu cam trên các thiết bị đầu cuối hỗ trợ nó.

Lưu ý rằng không phải tất cả các thiết bị đầu cuối đều hỗ trợ tất cả 256 màu, vì vậy điều quan trọng là phải nhận ra rằng màu được chọn có thể không được sử dụng. Chỉ màu được hỗ trợ gần nhất với màu được chọn sẽ được sử dụng.

Ví dụ, TTY không phải GUI chỉ hỗ trợ 16 màu cơ bản cho nền trước và 8 màu cơ bản cho nền, vì vậy các màu gần nhất cuối cùng được sử dụng có thể không như bạn mong đợi. Ví dụ, lựa chọn màu cam trên teal ở trên ( 38;5;214;48;5;30) hiển thị màu vàng trên nền đen trong TTY không GUI, vì đó là những màu được hỗ trợ gần nhất.

Phông chữ

10là phông chữ mặc định. 11thông qua 20là các phông chữ thay thế tiềm năng ( 20thường có nghĩa là một phông chữ in trong các thiết bị đầu cuối hiếm có hỗ trợ nó). Chỉ 1012dường như tồn tại theo mặc định trong TTY không phải GUI và không tồn tại trong Terminal Gnome hoặc xterm.

grepkhông chuyển đổi phông chữ trở lại đúng cách trước khi thoát, vì vậy hãy chạy resetnếu bạn bị kẹt trong một phông chữ không mong muốn sau khi greptrở về trình bao.

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal          ┃ xterm                   ┃ non-GUI TTY           ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│  10 │ «no effect»             │ «no effect»             │ «reset font»          │
│  11 │ «no effect»             │ «no effect»             │ -messed up font       │
│  12 │ «no effect»             │ «no effect»             │ +messed up font       │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

Nguồn phần "Tùy chọn số":
        "Tham số mã thoát ANSI, tham số SGR (Chọn kết xuất đồ họa)" trên Wikipedia
        ● Xác minh thử nghiệm trên thiết bị đầu cuối Gnome xtermvà TTY chế độ không phải GUI trên Ubuntu 16.04


ví dụ về thay đổi màu sau khi cài đặt <code> GREP_COLORS </ code>

Giá trị mặc định GREP_COLORS'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Ý nghĩa của mọi yếu tố được chấp nhận trên GREP_COLORScó thể được kiểm tra tại trang hướng dẫn của GNU.org .

Để hoàn thành, và như ra nhọn bởi @damadam, bạn cần phải thêm exportvào của bạn .bashrcđể lưu các thay đổi.

Liên quan:

Grep nhiều màu

Sử dụng màu sắc khác nhau cho mỗi grep khác


2
nhiều màu sắc hơn và các tùy chọn định dạng có sẵn, hãy thử <<<hello GREP_COLORS='ms=5;104' grep '.*'một lần! Một danh sách các mã có thể được tìm thấy, ví dụ ở đây (phần 6).
tráng miệng

1
Làm cách nào để bạn sử dụng các giá trị màu từ bảng 256 màu với GREP_COLORS?
Sebastian Stark

1
@SebastianStark Đối với tiền cảnh, hãy sử dụng 38;5;ɴ, trong đó nên được thay thế bằng một trong các giá trị màu. Đối với nền, sử dụng 48;5;ɴtheo cùng một cách. Ví dụ, 38;5;214;48;5;30nên cho bạn màu cam trên teal. Nếu không, thiết bị đầu cuối của bạn có thể không hỗ trợ 256 màu. Ví dụ, TTY không GUI chỉ hỗ trợ 16 màu cho nền trước và 8 cho nền và sẽ chọn màu nền trước và màu nền trong số 16 và 8 màu gần nhất với màu cam trên teal, màu vàng trên màu đen.
Chai T. Rex

1
@ ChaiT.Rex thx, hoạt động tốt. Nó không rõ ràng từ câu trả lời mặc dù.
Sebastian Stark

2
@ ChaiT.Rex cảm ơn, mặc dù đối với tôi, vấn đề là ở phần "256 màu" của văn bản không đề cập đến các tùy chọn đó, chỉ có bảng màu
Sebastian Stark

6

Ngoài câu trả lời từ @M. Becerra, đừng quên thêm điều này exportvào bên trong ~/.bashrc. Bạn có thể làm như thế:

nano ~/.bashrc

và gõ ngay bây giờ của bạn export:

export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

Điều này đặt grepkết quả thành màu vàng và tôi không cần làm lại exportsau khi khởi động lại thiết bị đầu cuối hoặc máy tính.


5
chỉnh sửa câu trả lời ban đầu để làm cho nó tốt hơn vào lần sau.
Thorbjørn Ravn Andersen

Cái này đẹp hơn NHƯNG nó dường như chỉ hoạt động trên Linux, không phải Mac :(
Sridhar Sarnobat

@SridharSarnobat Mac thực sự khác với Ubuntu, Mac không phải là Linux và tôi thực hiện bước này cho Ubuntu (nếu là dành cho Mac, nó sẽ lạc đề ở đây, các câu hỏi của Mac phải được hỏi trên Ask
Another

Vâng. Không đáng để tôi đăng một câu hỏi khác chỉ để tôi thể hiện nỗi buồn của mình :)
Sridhar Sarnobat
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.