การปรับเปลี่ยนสีของ grep


23

เมื่อฉัน grep บางอย่างผลลัพธ์จะเป็นสีแดงเสมอ ฉันรู้ว่าคำสั่งgrep --colorพิมพ์ผลลัพธ์เป็นสีซึ่งโดยค่าเริ่มต้นจะเป็นสีแดง ฉันสามารถเปลี่ยนสีได้หรือไม่?

คำตอบ:


18

คุณสามารถเปลี่ยนสีไฮไลต์ของgrepโดยใช้ตัวแปรสภาพแวดล้อมGREP_COLORSซึ่งคุณสามารถตั้งค่าดังนี้:

export GREP_COLORS='ms=01;31'

ตัวเลือกตัวเลข

ตัวเลขสามารถจัดรูปแบบข้อความเปลี่ยนสีพื้นหน้าหรือสีพื้นหลังหรือเปลี่ยนแบบอักษร

เงื่อนไขการเริ่มต้นสำหรับGREP_COLORSตัวเลือกทั้งหมดคือลักษณะข้อความแบบอักษรและสีเริ่มต้นของเทอร์มินัล รีเซ็ตใด ๆ เหล่านี้จะกลับไปใช้ค่าเริ่มต้นของสถานีที่ไม่ใด ๆ ของgrepค่าเริ่มต้นของ

ตำนาน

  • ;ʙ;- ;แยกตัวเลือกที่เป็นตัวเลขที่คุณต้องการรวม (เช่นตัวหนาสีเหลืองบนสีดำรวมตัวเลือกข้อความ1, 33และ40เข้า1;33;40 )
  • +ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛเปิดใช้งานเมื่อคุณใช้ตัวเลือกตัวเลขนั้น
  • -ᴇꜰꜰᴇᴄᴛ- ᴇꜰꜰᴇᴄᴛถูกปิดเมื่อคุณใช้ตัวเลือกตัวเลขนั้น
  • color, green, cyanและ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!)    │
└────────────┴────────────────────────────────────────────────────────────────────┘

สีพื้นหลัง

โปรดทราบว่า TTY ที่ไม่ใช่ GUI ไม่มีชุดสีพื้นหลังที่สว่างกว่า

┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ 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 บิต" บน Wikipediaเขียนโดย CMG Lee และคณะ เมื่อวันที่ 24 กุมภาพันธ์ 2016 และต่อมาและได้รับอนุญาตจากผู้เขียนภายใต้ของ CC BY-SA 3.0 ลิขสิทธิ์และใบอนุญาต GFDL ลิขสิทธิ์

สีจากแผนภูมิ 256 สีด้านบนสามารถใช้ดังนี้:

  • 38;5;ɴ- แทนที่ɴด้วยค่าของสีเฉพาะในแผนภูมิด้านบนเพื่อเปลี่ยนสีพื้นหน้าเป็นสีที่ใกล้เคียงที่สุดที่เทอร์มินัลรองรับ
  • 48;5;ɴ- แทนที่ɴด้วยค่าของสีเฉพาะในแผนภูมิด้านบนเพื่อเปลี่ยนสีพื้นหลังเป็นสีที่ใกล้เคียงที่สุดที่เทอร์มินัลรองรับ

ตัวอย่างเช่น38;5;214;48;5;30จะตั้งฉากหน้าเป็นสี214และพื้นหลังเป็นสี30โดยให้ผลลัพธ์เป็นสีส้มบนหน้าจอเทอร์มินัลที่รองรับ

โปรดทราบว่าเทอร์มินัลทั้งหมดไม่สนับสนุนสีทั้งหมด 256 สีดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องตระหนักว่าอาจไม่มีการใช้สีที่เลือก จะใช้สีที่รองรับที่ใกล้เคียงกับสีที่เลือกมากที่สุดเท่านั้น

ตัวอย่างเช่นไม่ใช่ TTY GUI สนับสนุนเฉพาะสีพื้นฐาน 16 สีสำหรับพื้นหน้าและสีพื้นฐาน 8 สีสำหรับพื้นหลังดังนั้นสีที่ใกล้เคียงที่สุดที่ถูกใช้อาจไม่เป็นอย่างที่คุณคาดหวัง ตัวอย่างเช่นการเลือกสีส้มบนน้านด้านบน (38;5;214;48;5;30 ) แสดงเป็นสีเหลืองบนสีดำใน non-GUI TTY เนื่องจากสีเหล่านี้เป็นสีที่รองรับที่สุด

แบบอักษร

10เป็นแบบอักษรเริ่มต้น 11through 20เป็นฟอนต์ทางเลือกที่เป็นไปได้ ( 20โดยปกติหมายถึงฟอนต์ in ในเทอร์มินัลหายากที่สนับสนุน) เท่านั้น10และ12ดูเหมือนจะมีชีวิตอยู่โดยเริ่มต้นในไม่ GUI TTY และไม่มีใครอยู่ในเทอร์มิ GNOME 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       │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘

"ตัวเลือกที่เป็นตัวเลข" ที่มาของส่วน:
        "รหัสหลบหนี ANSI, SGR (เลือกการแสดงผลกราฟิก)" บนวิกิพีเดีย
        ●การตรวจสอบการทดลองบนเทอร์มินัล GNOME xtermและ TTY ที่ไม่ใช่โหมด GUI บน Ubuntu 16.04


ตัวอย่างการเปลี่ยนสีหลังจากตั้งค่า <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
คุณใช้ค่าสีจากตารางสี 256 กับ GREP_COLORS ได้อย่างไร
เซบาสเตียนสตาร์ค

1
@SebastianStark สำหรับเบื้องหน้าให้ใช้38;5;ɴโดยที่ɴควรถูกแทนที่ด้วยหนึ่งในค่าสี สำหรับพื้นหลังใช้48;5;ɴในลักษณะเดียวกัน ตัวอย่างเช่นคุณ38;5;214;48;5;30ควรให้ส้มแก่น้าน หากไม่เป็นเช่นนั้นเครื่องของคุณอาจไม่รองรับ 256 สี ตัวอย่างเช่น non-GUI TTY รองรับเฉพาะ 16 สีสำหรับพื้นหน้าและ 8 สำหรับพื้นหลังและจะเลือกสีพื้นหน้าและสีพื้นหลังจาก 16 และ 8 ที่ใกล้เคียงกับสีส้มบนน้านซึ่งเป็นสีเหลืองบนสีดำ
Chai T. Rex

1
@ ChaiT.Rex ขอบคุณทำงานได้ดี ไม่ชัดเจนมากจากคำตอบว่า
เซบาสเตียนสตาร์ค

2
@ ChaiT.Rex ขอบคุณ แต่สำหรับฉันปัญหาคือมากกว่านั้นในส่วน "256 สี" ของข้อความไม่มีการกล่าวถึงตัวเลือกเหล่านั้นเพียงแค่ตารางสี
เซบาสเตียนสตาร์

6

นอกเหนือจากคำตอบจาก @M Becerra ไม่ลืมที่จะเพิ่มนี้ภายใน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
แก้ไขคำตอบเดิมเพื่อให้ดีขึ้นในครั้งต่อไป
Thorbjørn Ravn Andersen

นี้ดีกว่า แต่ดูเหมือนว่าจะทำงานบน Linux เท่านั้นไม่ใช่ Mac :(
Sridhar Sarnobat

@SridharSarnobat Mac แตกต่างจาก Ubuntu, Mac ไม่ใช่ Linux และฉันทำตามขั้นตอนนี้สำหรับ Ubuntu (ถ้าใช้สำหรับ Mac มันจะไม่ได้อยู่ที่นี่คำถาม Mac ต้องถามAsk Different
damadam

ใช่. มันไม่คุ้มค่าฉันเพียงแค่โพสต์คำถามสำหรับผมที่จะแสดงความโศกเศร้าของฉันแม้ว่า :) อีก
Sridhar Sarnobat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.