修改grep的颜色


23

当我grep某些东西时,结果总是红色。我知道该命令grep --color以彩色打印结果,默认情况下为红色。我可以改变颜色吗?

Answers:


18

您可以grep使用环境变量来更改的突出显示颜色,GREP_COLORS可以这样设置:

export GREP_COLORS='ms=01;31'

数值选项

数字可以设置文本样式,更改前景色或背景色或更改字体。

所有GREP_COLORS选项的起始条件都是终端的默认文本样式,字体和颜色。重置任何这些将恢复为终端的默认值,而不是任何grep的默认值。

传说

  • ;ʙ;- ;要结合分离数字选项(例如,大胆的黄上黑色文本合并选项133401;33;40
  • +ᴇꜰꜰᴇᴄᴛ— 使用该数字选项时,ᴇꜰꜰᴇᴄᴛ会打开
  • -ᴇꜰꜰᴇᴄᴛ— 使用该数字选项时,ᴇꜰꜰᴇᴄᴛ将关闭
  • colorgreencyan,和grey- “文本样式”部分中,这是指对前景色
  • colors —在“文字样式”部分中,这既指前景色,也指背景色
  • this color—在“前景色”部分中,指的是前景色;在“背景色”部分中,是指背景色

文字样式

空字符串或0重置所有文本样式,并将两种颜色重置为默认值,但将字体重置为默认值。

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!)    │
└────────────┴────────────────────────────────────────────────────────────────────┘

背景颜色

请注意,非GUI TTY不会提供更明亮的背景颜色系列。

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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!)     │
└────────────┴────────────────────────────────────────────────────────────────────┘

256色图表

256色图表

上面的图是刊登在内容截图“ANSI转义代码,8位色彩”在维基百科上,撰写由CMG Lee等人。于2016年2月24日及之后并由作者根据CC BY-SA 3.0版权许可GFDL版权许可进行许可

上面的256色图表中的颜色可以按如下方式使用:

  • 38;5;ɴ—用上表中的特定颜色值替换to,以将前景色更改为终端支持的最接近的颜色
  • 48;5;ɴ—用上表中的特定颜色值替换to,以将背景颜色更改为终端支持的最接近的颜色

例如,38;5;214;48;5;30将前景设置为color 214,将背景设置为color 30,在支持该功能的终端上将其设置为淡绿色。

请注意,并非所有终端都支持全部256种颜色,因此务必意识到可能不会使用所选颜色,这一点很重要。仅使用最接近所选颜色的支持颜色。

例如,非GUI TTY仅支持前景的基本16种颜色和背景的基本8种颜色,因此最终使用的最接近的颜色可能不是您所期望的。例如,38;5;214;48;5;30在非GUI TTY中,()上方的桔黄色显示为黑底黄,因为这些是最接近的受支持颜色。

字型

10是默认字体。11通过20是潜在的替代字体(20通常在支持该字体的罕见终端中表示𝕱𝖗𝖆𝖐𝖙𝖚𝖗字体)。在非GUI TTY中,默认情况下仅存在1012似乎存在,而GNOME Terminal或中不存在xterm

grep不能在退出前正确切换字体,因此reset如果grep返回外壳后卡住了不需要的字体,请运行。

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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       │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

“数字选项”部分的来源:
        Wikipedia上的“ ANSI转义代码,SGR(选择图形渲染)参数”
        ●GNOME Terminal上的实验验证xterm,以及Ubuntu 16.04上的非GUI模式的TTY


设置<code> GREP_COLORS </ code>后颜色变化的示例

默认值GREP_COLORS就是'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'

GREP_COLORS可以在GNU.org的手册页上查看接受的每个元素的含义。

如@damadam所指出的那样,为了完成操作,您需要将添加export到其中.bashrc以保存更改。

有关:

五彩的Grep

每隔grep使用不同的颜色


2
还有很多更多的颜色和格式可供选择,尝试<<<hello GREP_COLORS='ms=5;104' grep '.*'一次吧!例如,可以在此处找到代码列表(第6节)。
甜点

1
如何在GREP_COLORS中使用256色表中的颜色值?
塞巴斯蒂安·史塔克

1
@SebastianStark对于前景,请使用38;5;ɴ,其中ɴ应该用颜色值之一替换。对于背景,48;5;ɴ以相同的方式使用。例如,38;5;214;48;5;30应该给您青绿色。如果不支持,则您的终端可能不支持256色。例如,非GUI TTY仅支持16种颜色的前景色和8种背景的色,并将从最接近于蓝绿色的橙色(黑色为黄色)的16种和8种中选择前景和背景颜色。
Chai T. Rex

1
@ ChaiT.Rex thx,工作正常。从答案来看,这不是很明显。
塞巴斯蒂安·史塔克

2
@ ChaiT.Rex谢谢,尽管对我而言,问题更多是在文本的“ 256色”部分中没有提及这些选项,仅提及颜色表
Sebastian Stark

6

除了@M的答案。贝塞拉,不要忘了添加此export~/.bashrc。您可以这样做:

nano ~/.bashrc

然后输入您的export

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

这会将grep结果设置为黄色,并且我不需要重做export重启后的终端或计算机。


5
编辑原始答案以使其下次更好。
托尔比约恩Ravn的安徒生

但是,这更好,但似乎只能在Linux上运行,而不能在Mac上运行:(
Sridhar Sarnobat

@SridharSarnobat Mac与Ubuntu确实有很大不同,Mac不是Linux,我在Ubuntu上执行此步骤(如果是Mac,
则不

是的 我不值得发布另一个问题只是为了表达我的悲伤:)
Sridhar Sarnobat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.