การพิมพ์ข้อความสีโดยใช้เสียงสะท้อน


25

ฉันรู้ว่าสำหรับการพิมพ์ข้อความสีโดยใช้ echo เช่นสีแดงรหัสคือ: echo -e "\e[1;31m This is red text \e[0m"
และฉันรู้ว่าในตัวอย่างนี้ 31 คือรหัสของสีแดงและจำนวนสีอื่น ๆ คือ:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

และสำหรับสีพื้นหลังจำนวนคือ 40 ถึง 47

คำถามของฉันนี้สิ่งที่ไม่\eและ[และm(หลังจากวันที่ 31) ว่าหมายถึงที่นี่?
ฉันอ่านใน man page ว่า \ e หนีแล้ว แต่ฉันไม่เข้าใจความหมาย


โดยทั่วไปแล้วคุณจะหลีกเลี่ยงอักขระที่มีความหมายพิเศษในบริบททางเทคนิคปัจจุบัน ตัวอย่างเช่นสตริงมักจะเขียนภายในเครื่องหมายคำพูด "เช่นนี้" แต่ถ้าคุณต้องการอัญประกาศภายในสตริงคุณจะต้องหลีกเลี่ยงตัวอักษรเหล่านั้นเพื่อที่พวกเขาจะถูกตีความอย่างแท้จริงและไม่เป็นตัวคั่น ตัวอย่างเช่นecho "She said \"Hi\""สำหรับกรณีนี้ (คำถามของคุณ) คุณจะต้องรอคำตอบที่ดีกว่า
Emanuel Berg

คำตอบ:


13

พวกเขาเป็นส่วนหนึ่งของ 'Sequence elements' ของANSI escape sequencesหรือที่รู้จักกันในชื่อECMA-48 CSI sequences ซึ่งเริ่มนำมาใช้ในปี 1976

โดยเฉพาะอย่างยิ่ง[เป็น 'ผู้แนะนำลำดับการควบคุม '

พิมพ์คำman console_codesว่า distro * nix เพื่อดูรหัสและเอกสารบางส่วน


man 4 console_codeไม่man console_code: ใน Ubuntu ของฉัน
0x6773

ชื่อหน้าด้วยตนเองลงท้ายด้วย "s" ดังนั้น "man console_codes" ควรแสดงหน้าที่ถูกต้อง
Mikko Rantalainen

4

เพื่อให้ได้รหัสสีที่แม่นยำมีการกำหนดไว้ด้านล่าง -

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

ดังนั้นโดยพื้นฐานแล้วมันเป็นวิธีที่เทอร์มินัลที่แตกต่างกันตีความรหัสสีและคุณใส่ข้อความของคุณไว้ในองค์ประกอบเหล่านี้ มันเป็นวิธีที่แปลกที่จะทำให้เครื่องเข้าใจสิ่งที่คุณหมายถึง (เช่น HexCodes หรือไบนารี .. )


2

ฉันพบคำอธิบายที่ดีที่นี่ (อย่างน้อยก็ดีสำหรับฉัน:-) ) ฉันไม่แน่ใจว่ามันจะมีประโยชน์สำหรับคุณ

ในการเริ่มต้นให้พิมพ์สิ่งนี้บนคอนโซลของคุณ:

echo "^[[0;31;40mIn Color"

อักขระตัวแรกคือตัวหนีซึ่งดูเหมือนว่าทั้งสองตัวละคร ^ และ [ เพื่อให้สามารถพิมพ์ได้คุณต้องกด CTRL + V แล้วกดปุ่ม ESC อักขระอื่น ๆ ทั้งหมดเป็นอักขระที่พิมพ์ได้ตามปกติดังนั้นคุณจะเห็นสตริง In Color เป็นสีแดง ประเภทจะยังคงอยู่ในสีนั้นจนกว่าคุณจะกลับคืนมาอีกครั้งโดยพิมพ์สิ่งนี้:

พวกเขาเป็นรหัสหลบหนีเพื่อตั้งค่าโหมดสีในเทอร์มินัล เป็นเพียงเมื่อพิมพ์ด้วยตัวอักษรปกติพวกเขามีลักษณะเช่นนั้น


2

\eจดชวเลขสำหรับอักขระ Escape <ESC>[และmเครื่องหมายสำหรับจุดเริ่มต้นและจุดสิ้นสุดของ ANSI ลำดับการควบคุมสีซึ่งเป็นส่วนหนึ่งของ ANSI สถานีควบคุมลำดับขั้นตอน ส่วนใหญ่เริ่มต้นด้วย<ESC>[ตามด้วยตัวเลขตามด้วยตัวอักษรที่ระบุว่ามีการใช้งานฟังก์ชันใด (เช่นเลื่อนเคอร์เซอร์ไปที่บรรทัดชัดเจนถึงท้ายบรรทัดกลับเคอร์เซอร์กลับไปที่ตำแหน่งที่บันทึกไว้และอื่น ๆ )

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