บทนำ
พื้นที่ echo
คำสั่งส่งออกสตริงที่กำหนดให้กับ ท่อส่งออกมาตรฐานโดยทั่วไปจะชี้ไปที่เทอร์มินัล แม้ว่าท่อเอาต์พุตมาตรฐานสามารถชี้ไปที่อินเทอร์เฟซอื่นได้ – the echo
คำสั่งมักใช้เพื่อพิมพ์และแสดงข้อความในเทอร์มินัล โดยค่าเริ่มต้น ข้อความที่แสดงจะสืบทอดสีของข้อความอื่นในเทอร์มินัล (ซึ่งปรับแต่งได้ในตัวของมันเอง) อย่างไรก็ตาม – มีหลายวิธีที่คุณสามารถเปลี่ยนสีเอาต์พุตของ echo
– ทั้งสำหรับสตริงแต่ละรายการและสำหรับข้อความทั้งหมด
ในคำแนะนำสั้น ๆ นี้ เราจะมาดูกันว่าคุณสามารถเปลี่ยนสีเอาต์พุตของ . ได้อย่างไร
echo
ในระบบที่ใช้ Linux โดยใช้รหัสหลีกเลี่ยง ANSItput
และวิธีทำให้กระบวนการนี้ละเอียดน้อยลงในสคริปต์ทุบตี
เปลี่ยนสีเอาต์พุตด้วย ANSI Escape Codes
วิธีที่ง่ายที่สุดในการเปลี่ยนสีคือการใช้เอสเควนซ์ซีเควนซ์/โค้ดของ ANSI รหัสหลีกเลี่ยง ANSI ทั้งหมดเริ่มต้นด้วย Escape
ตัวอักษรซึ่งสามารถแสดงในรูปแบบต่างๆ – 27
เป็นทศนิยม x1B
ในเลขฐานสิบหกเป็นปุ่มควบคุม ^[
,หรือ 33
ในรูปแบบเลขฐานแปด ลำดับจะตามด้วยคำสั่ง:
33[command
โดยที่วงเล็บเปิด (ผู้แนะนำลำดับการควบคุม) เป็นทางเลือก แต่ช่วยแยกคำสั่งออกจากอักขระหลีก เมื่อคุณใส่ รหัสสี ตามคำสั่ง จะเปลี่ยนสีของข้อความที่กำลังจะมาถึง:
33[0;34
0;34
คือรหัสสำหรับสีน้ำเงินเป็นต้น ด้วยสิ่งนี้เพียงอย่างเดียว คุณสามารถเปลี่ยนสีของข้อความใน echo
กับ:
33[0;34Text
ที่ไหน Text
จะเป็นสีน้ำเงิน อีกทางหนึ่ง ให้พิจารณาสคริปต์ทุบตีอย่างง่ายในการพิมพ์ "ยินดีต้อนรับสู่ประเทศฝรั่งเศส" ในสีของธงชาติฝรั่งเศส:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
ตัวเลือก -e
ธงของ echo
คำสั่งอนุญาตให้คุณใช้อักขระพิเศษเช่น n
(ขึ้นบรรทัดใหม่) และ t
(แท็บ) ภายในสตริงอินพุต
เมื่อคุณเรียกใช้สคริปต์:
$ ./colors.sh
ส่งผลให้:
รหัส ANSI ไม่ได้จำกัดแค่สี แต่ยังสามารถนำไปใช้กับสไตล์ได้อีกด้วย โค้ด 0..9
แสดงถึงรูปแบบข้อความในขณะที่รหัส 30...37
เป็นตัวแทนของสี:
สี | รหัส | ลักษณะข้อความ | รหัส |
Black | 30 | ข้อความธรรมดา | 0 |
สีแดง | 31 | ข้อความตัวหนา | 1 |
สีเขียว | 32 | ข้อความความเข้มต่ำ | 2 |
น้ำตาล / ส้ม | 33 | ขีดเส้นใต้ข้อความ | 4 |
สีน้ำเงิน | 34 | ข้อความกะพริบ | 5 |
สีม่วง | 35 | ข้อความที่มองไม่เห็น | 8 |
Cyan | 36 | ข้อความขีดทับ | 9 |
สีเทาอ่อน | 37 |
มาสร้างสคริปต์ทุบตีเพื่อสำรวจตัวเลือกเหล่านี้:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
การเรียกใช้สคริปต์นี้ส่งผลให้:
ดูคู่มือเชิงปฏิบัติสำหรับการเรียนรู้ Git ที่มีแนวทางปฏิบัติที่ดีที่สุด มาตรฐานที่ยอมรับในอุตสาหกรรม และเอกสารสรุปรวม หยุดคำสั่ง Googling Git และจริงๆ แล้ว เรียน มัน!
ในทำนองเดียวกัน คุณสามารถเปลี่ยนสีพื้นหลังของข้อความเหล่านี้ได้โดยใช้รหัส 40..47
:
สี | รหัส |
Black | 40 |
สีแดง | 41 |
สีเขียว | 42 |
น้ำตาล / ส้ม | 43 |
สีน้ำเงิน | 44 |
สีม่วง | 45 |
Cyan | 46 |
สีเทาอ่อน | 47 |
การเปลี่ยนพื้นหลังของสตริงที่กำหนดจะเป็นกฎเดียวกันกับเมื่อเปลี่ยนสีแบบอักษร - โค้ดจะเปลี่ยนลักษณะการทำงาน:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
หมายเหตุ ตามกฎทั่วไป – คุณสามารถแปลสีแบบอักษรเป็นสีพื้นหลังโดยเพิ่ม 10 30
เป็นสีตัวอักษรสีดำ 40
เป็นสีพื้นหลังสีดำ
เปลี่ยนสีเอาต์พุตด้วย tput
ทางเลือกแทนรหัส ANSI คือการใช้ tput
คำสั่ง:
$ tput setaf color_code
setf
อนุญาตให้มี 8 สีในขณะที่ setaf
อนุญาตให้ใช้ 256 สี ดังนั้นขึ้นอยู่กับคำสั่งที่คุณใช้ คุณสามารถเลือกระหว่าง 0..7
และ 0..255
เป็นรหัสสี ทั้งสอง คำสั่งอุทิศ 0..7
เป็นรหัสสีเดียวกันในขณะที่มี setaf
, 8..15
เป็นสีที่มีความเข้มสูงและ 16..231
เป็นเฉดสีที่แตกต่างกันของ 8 ตัวแรกและ 232..255
เป็นสีโทนสีเทา:
เครดิต: วิกิพีเดีย
ในที่สุด tput
ยังให้คุณเปลี่ยนสีพื้นหลัง เพิ่มตัวหนา ลดความเข้ม ฯลฯ ด้วยคำสั่งอื่นๆ:
ลักษณะข้อความ | คำสั่ง |
สีพื้นหน้า | เซตาฟ |
สีพื้นหลัง | เซตาบ |
ไม่มีสไตล์ | sgv0 |
ข้อความตัวหนา | กล้า |
ข้อความความเข้มต่ำ | สลัว |
ขีดเส้นใต้ข้อความ | สมุล |
ข้อความกะพริบ | กะพริบตา |
ย้อนกลับข้อความ | การหมุนรอบ |
มาสร้างสคริปต์อื่นที่ใช้ tput
เพื่อเปลี่ยนสีเอาต์พุต echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
สคริปต์นี้จะพิมพ์ผลลัพธ์ต่อไปนี้ในเทอร์มินัล:
คำสั่ง tput มอบวิธีง่ายๆ ในการพิมพ์สีใดๆ ผ่านรหัสสีง่ายๆ ตอนนี้มาสร้างสคริปต์ที่สามารถพิมพ์ทุกรหัสสีที่มีให้สำหรับคำสั่ง tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
มันจะพิมพ์ 0 ถึง 255 สีและรหัส:
สรุป
ในคำแนะนำสั้น ๆ นี้ – เราได้มาดูวิธีการเปลี่ยนสีของ echo
เอาต์พุตของ Linux – โดยใช้ ANSI Escape Sequences และ the tput
คำสั่ง
นอกจากนี้เรายังได้สำรวจวิธีที่คุณสามารถทำให้กระบวนการใช้ความละเอียดน้อยลงโดยใช้ตัวแปร Bash ปรับแต่งสีพื้นหลังและข้อความรูปแบบ