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 --color
in 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?
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 --color
in 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:
Bạn có thể thay đổi màu tô sáng grep
bằng cách sử dụng biến môi trường GREP_COLORS
mà bạn có thể đặt như sau:
export GREP_COLORS='ms=01;31'
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_COLORS
tù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ỳ grep
mặc định nào.
ᴀ;ʙ;…
- ;
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
, 33
và 40
và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 foregroundcolors
- 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ềnthis 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ềnMộ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» │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
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 đồ 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 và được các tác giả cấp phép theo cả giấy phép bản quyền CC BY-SA 3.0 và giấ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;30
sẽ đặt tiền cảnh thành màu 214
và 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.
10
là phông chữ mặc định. 11
thông qua 20
là các phông chữ thay thế tiềm năng ( 20
thườ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ỉ 10
và 12
dườ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
.
grep
khô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 reset
nếu bạn bị kẹt trong một phông chữ không mong muốn sau khi grep
trở 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 Gnomexterm
và TTY chế độ không phải GUI trên Ubuntu 16.04
Giá trị mặc định GREP_COLORS
là'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_COLORS
có 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 export
vào của bạn .bashrc
để lưu các thay đổi.
Liên quan:
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;30
nê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.
Ngoài câu trả lời từ @M. Becerra, đừng quên thêm điều này export
và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 grep
kết quả thành màu vàng và tôi không cần làm lại export
sau khi khởi động lại thiết bị đầu cuối hoặc máy tính.
<<<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).