เมื่อฉัน grep บางอย่างผลลัพธ์จะเป็นสีแดงเสมอ ฉันรู้ว่าคำสั่งgrep --color
พิมพ์ผลลัพธ์เป็นสีซึ่งโดยค่าเริ่มต้นจะเป็นสีแดง ฉันสามารถเปลี่ยนสีได้หรือไม่?
เมื่อฉัน grep บางอย่างผลลัพธ์จะเป็นสีแดงเสมอ ฉันรู้ว่าคำสั่งgrep --color
พิมพ์ผลลัพธ์เป็นสีซึ่งโดยค่าเริ่มต้นจะเป็นสีแดง ฉันสามารถเปลี่ยนสีได้หรือไม่?
คำตอบ:
คุณสามารถเปลี่ยนสีไฮไลต์ของ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!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
แผนภูมิด้านบนเป็นภาพหน้าจอของเนื้อหาที่เผยแพร่ใน"รหัสหลบหนี 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
เป็นแบบอักษรเริ่มต้น 11
through 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 (เลือกการแสดงผลกราฟิก)" บนวิกิพีเดีย
●การตรวจสอบการทดลองบนเทอร์มินัล GNOMExterm
และ TTY ที่ไม่ใช่โหมด GUI บน Ubuntu 16.04
ค่าเริ่มต้นของ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
เพื่อบันทึกการเปลี่ยนแปลง
ที่เกี่ยวข้อง:
38;5;ɴ
โดยที่ɴควรถูกแทนที่ด้วยหนึ่งในค่าสี สำหรับพื้นหลังใช้48;5;ɴ
ในลักษณะเดียวกัน ตัวอย่างเช่นคุณ38;5;214;48;5;30
ควรให้ส้มแก่น้าน หากไม่เป็นเช่นนั้นเครื่องของคุณอาจไม่รองรับ 256 สี ตัวอย่างเช่น non-GUI TTY รองรับเฉพาะ 16 สีสำหรับพื้นหน้าและ 8 สำหรับพื้นหลังและจะเลือกสีพื้นหน้าและสีพื้นหลังจาก 16 และ 8 ที่ใกล้เคียงกับสีส้มบนน้านซึ่งเป็นสีเหลืองบนสีดำ
นอกเหนือจากคำตอบจาก @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
หลังจากรีสตาร์ทเทอร์มินัลหรือคอมพิวเตอร์
<<<hello GREP_COLORS='ms=5;104' grep '.*'
ครั้งเดียว! รายการรหัสสามารถพบได้เช่นที่นี่ (ส่วนที่ 6)