มีวิธีที่เชื่อถือได้ในการตรวจสอบว่าเทอร์มินัลอีมูเลเตอร์ของฉันรองรับหลายสีหรือไม่
ถ้าecho $TERM
พิมพ์ออกxterm
มามันจะบอกฉันได้อย่างชัดเจนว่าเครื่องจำลองเทอร์มินัลของฉันรองรับหลายสีหรือไม่? ฉันจะตรวจสอบข้อมูลนี้อย่างน่าเชื่อถือได้อย่างไร
มีวิธีที่เชื่อถือได้ในการตรวจสอบว่าเทอร์มินัลอีมูเลเตอร์ของฉันรองรับหลายสีหรือไม่
ถ้าecho $TERM
พิมพ์ออกxterm
มามันจะบอกฉันได้อย่างชัดเจนว่าเครื่องจำลองเทอร์มินัลของฉันรองรับหลายสีหรือไม่? ฉันจะตรวจสอบข้อมูลนี้อย่างน่าเชื่อถือได้อย่างไร
คำตอบ:
ค่าของ$TERM
ไม่ให้ข้อมูลมากเกี่ยวกับจำนวนสีที่รองรับ เทอร์มินัลจำนวนมากโฆษณาตัวเองเป็นxterm
และอาจรองรับจำนวนสีใด ๆ (2, 8, 16, 88 และ 256 เป็นค่าทั่วไป)
ท่านสามารถสอบถามค่าของแต่ละสีที่มีลำดับการควบคุมOSC 4 ; c ; ? BEL
หากรองรับหมายเลขสีc
และหากเทอร์มินัลเข้าใจลำดับการควบคุมนี้เทอร์มินัลจะตอบกลับด้วยค่าของสี หากไม่รองรับหมายเลขสีหรือหากเทอร์มินัลไม่เข้าใจลำดับการควบคุมนี้เทอร์มินัลจะไม่ตอบคำถามใด ๆ นี่คือตัวอย่างข้อมูล bash / zsh เพื่อค้นหาว่าสนับสนุนสี 42 หรือไม่ (เปลี่ยนเส้นทางไปยัง / จากเทอร์มินัลหากจำเป็น):
printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported
ในบรรดาเทอร์มินัลยอดนิยม xterm และเทอร์มินัลที่ใช้ไลบรารี VTE (Gnome-terminal, Terminator, Xfce4-terminal, …) สนับสนุนลำดับการควบคุมนี้; rxvt, konsole, หน้าจอและ tmux ทำไม่ได้
ฉันไม่รู้วิธีที่ตรงกว่านี้อีก
read -d $'\a' -s -t 1
ไหม
\a
อักขระตัวแรก(ตัวอักษรระฆัง) โดยไม่มีอินพุต echoing ด้วยการหมดเวลา 1 วินาที
tput colors
สืบค้นฐานข้อมูล terminfo TERM=xterm
มีโอกาสที่คุณมี Xterm สามารถรองรับสีอย่างน้อย 2, 8, 16, 88 หรือ 256 สีขึ้นอยู่กับรุ่นและตัวเลือกการคอมไพล์และรันไทม์ แต่ฐานข้อมูล terminfo สามารถเก็บค่าได้เพียงค่าเดียวเท่านั้น คุณสามารถตั้งค่าเช่นTERM=xterm+256color
แต่จากนั้นคุณจะรำคาญเมื่อคุณเข้าสู่เครื่องที่ไม่มีรายการนี้ในฐานข้อมูล termcap / terminfo
printf … >/dev/tty
) จากนั้นอ่านจาก terminal ( read … </dev/tty
) Xterm ตอบสนองต่อOSC 4; …; ? BEL
ลำดับโดยการกดแป้นพิมพ์
มีสคริปต์ perl 256colors2.plที่จะแสดงสีทั้งหมดในเทอร์มินัลของคุณ
คุณสามารถใช้ได้
$ tput colors
ในเดเบียน tput ติดตั้งของฉันเป็นส่วนหนึ่งของncurses-bin
แพคเกจที่ติดตั้งโดยค่าเริ่มต้น
TERM
สีกี่สีเท่านั้นไม่ใช่สีที่สามารถรองรับได้ตามความเหมาะสมTERM