<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
การเพิ่มสี
โปรแกรมจำลองเทอร์มินัลส่วนใหญ่จะตอบสนองต่อลำดับอักขระที่ไม่ได้พิมพ์เพื่อควบคุมสิ่งต่างๆ เช่น คุณลักษณะของอักขระ (เช่น สี ตัวหนา และข้อความกะพริบที่หวาดกลัว) และตำแหน่งเคอร์เซอร์ เราจะพูดถึงตำแหน่งของเคอร์เซอร์กันเล็กน้อย แต่ก่อนอื่น มาดูสีกันก่อน
ความสับสนของเทอร์มินัล
ย้อนกลับไปในสมัยโบราณ เมื่อเทอร์มินัลเชื่อมต่อกับคอมพิวเตอร์ระยะไกล มีเทอร์มินัลหลายยี่ห้อที่แข่งขันกันและทำงานแตกต่างกัน พวกเขามีแป้นพิมพ์ที่แตกต่างกันและพวกเขาทั้งหมดมีวิธีการตีความข้อมูลการควบคุมต่างกัน ระบบที่เหมือน Unix และ Unix มีระบบย่อยที่ค่อนข้างซับซ้อนสองระบบเพื่อจัดการกับ Babel ของการควบคุมเทอร์มินัล (เรียกว่า เทอมแคป และ คำศัพท์). หากคุณดูในส่วนที่ลึกที่สุดของการตั้งค่าเทอร์มินัลอีมูเลเตอร์ คุณอาจพบการตั้งค่าสำหรับประเภทของการจำลองเทอร์มินัล
ในความพยายามที่จะทำให้เทอร์มินัลพูดภาษาทั่วไปบางประเภท สถาบันมาตรฐานแห่งชาติอเมริกา (ANSI) ได้พัฒนาชุดลำดับอักขระมาตรฐานเพื่อควบคุมเทอร์มินัลวิดีโอ ผู้ใช้ DOS รุ่นเก่าจะจำ AN-SI.SYS ไฟล์ที่ใช้ในการเปิดใช้งานการตีความรหัสเหล่านี้
สีของอักขระถูกควบคุมโดยการส่งเทอร์มินัลอีมูเลเตอร์และ รหัสหลีกเลี่ยง ANSI ฝังอยู่ในกระแสของตัวละครที่จะแสดง รหัสควบคุมจะไม่ "พิมพ์ออกมา" บนจอแสดงผล แต่จะถูกตีความโดยเครื่องเทอร์มินัลว่าเป็นคำสั่ง ดังที่เราเห็นในตารางข้างต้น \[ และ \] ลำดับจะใช้เพื่อห่อหุ้มอักขระที่ไม่ได้พิมพ์ รหัสหลีกเลี่ยง ANSI เริ่มต้นด้วยเลขฐานแปด 033 (รหัสที่สร้างโดยแป้น Escape) ตามด้วยแอตทริบิวต์อักขระที่เป็นตัวเลือก ตามด้วยคำสั่ง ตัวอย่างเช่น รหัสสำหรับตั้งค่าสีข้อความให้เป็นปกติ (แอตทริบิวต์ = 0) ข้อความสีดำคือ:
\033[0;30ม
นี่คือตารางสีข้อความที่ใช้ได้ โปรดสังเกตว่าสีต่างๆ ถูกแบ่งออกเป็นสองกลุ่ม โดยมีความแตกต่างจากการใช้แอตทริบิวต์ตัวหนา (1) ซึ่งสร้างลักษณะของสี "อ่อน":
ตารางที่ 13- 2: Escape Sequence ที่ใช้ในการตั้งค่าสีข้อความ
ลำดับ | สีข้อความ | ลำดับ | สีข้อความ |
\033[0;30ม | Black | \033[1;30ม | สีเทาเข้ม |
\033[0;31ม | สีแดง | \033[1;31ม | แสงสีแดง |
\033[0;32ม | สีเขียว | \033[1;32ม | ไฟเขียว |
\033[0;33ม | Brown | \033[1;33ม | สีเหลือง |
\033[0;34ม | สีน้ำเงิน | \033[1;34ม | ฟ้าอ่อน |
\033[0;35ม | สีม่วง | \033[1;35ม | สีม่วงอ่อน |
การเพิ่มสี
\033[0;36ม | Cyan | \033[1;36ม | ฟ้าอ่อน |
\033[0;37ม | แสงสีเทา | \033[1;37ม | ขาว |
เรามาลองสร้างพรอมต์สีแดงกัน เราจะใส่รหัส Escape ที่จุดเริ่มต้น:
$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "
$
$ PS1="\[\033[0;31m\]<\u@\h \W>\$ "
$
ใช้งานได้ แต่สังเกตว่าข้อความทั้งหมดที่เราพิมพ์หลังจากพรอมต์นั้นเป็นสีแดงด้วย ในการแก้ไขปัญหานี้ เราจะเพิ่ม Escape Code อื่นที่ส่วนท้ายของพร้อมต์ที่บอกให้เทอร์มินัลอีมูเลเตอร์กลับสู่สีก่อนหน้า:
$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "
$
$ PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\] "
$
มันดีกว่า!
นอกจากนี้ยังสามารถกำหนดสีพื้นหลังของข้อความโดยใช้รหัสที่แสดงด้านล่าง สีพื้นหลังไม่สนับสนุนคุณลักษณะตัวหนา
ตาราง 13-3: Escape Sequences ที่ใช้ในการตั้งค่าสีพื้นหลัง
ลำดับ | สีพื้นหลัง | ลำดับ | สีพื้นหลัง |
\033[0;40ม | Black | \033[0;44ม | สีน้ำเงิน |
\033[0;41ม | สีแดง | \033[0;45ม | สีม่วง |
\033[0;42ม | สีเขียว | \033[0;46ม | Cyan |
\033[0;43ม | Brown | \033[0;47ม | แสงสีเทา |
เราสามารถสร้างพรอมต์ที่มีพื้นหลังสีแดงโดยใช้การเปลี่ยนแปลงง่ายๆ กับ Escape Code แรก:
$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "
<me@linuxbox ~>$
$ PS1="\[\033[0;41m\]<\u@\h \W>\$\[\033[0m\] "
<me@linuxbox ~>$
ลองใช้รหัสสีและดูว่าคุณสามารถสร้างอะไรได้บ้าง!
หมายเหตุ: นอกจากแอตทริบิวต์อักขระปกติ (0) และตัวหนา (1) แล้ว ข้อความอาจได้รับเครื่องหมายขีดล่าง (4) กะพริบ (5) และแอตทริบิวต์ผกผัน (7) ด้วยเช่นกัน เพื่อประโยชน์ของรสนิยมที่ดี เทอร์มินัลอีมูเลเตอร์จำนวนมากปฏิเสธที่จะให้เกียรติคุณลักษณะการกะพริบ