यह जांचना कि मेरे टर्मिनल एमुलेटर कितने रंगों का समर्थन करता है


21

क्या यह जांचने का एक विश्वसनीय तरीका है कि मेरे टर्मिनल एमुलेटर कितने रंगों का समर्थन करता है?

यदि echo $TERMप्रिंट xtermकरता है, तो क्या यह असमान रूप से मुझे बताता है कि मेरे टर्मिनल एमुलेटर कितने रंगों का समर्थन करता है? मैं इस जानकारी को कैसे मज़बूती से जाँच सकता हूँ?


4
इन्हें भी देखें: unix.stackexchange.com/questions/9957/…
jasonwryan

जवाबों:


20

मूल्य $TERMसमर्थित रंगों की संख्या के बारे में अधिक जानकारी नहीं देता है। कई टर्मिनलों के रूप में खुद को विज्ञापित करते हैं xterm, और किसी भी संख्या में रंगों का समर्थन कर सकते हैं (2, 8, 16, 88 और 256 सामान्य मूल्य हैं)।

आप OSC 4 ; c ; ? BEL नियंत्रण अनुक्रम के साथ प्रत्येक रंग के मूल्य को क्वेरी कर सकते हैं । यदि रंग संख्या cसमर्थित है, और यदि टर्मिनल इस नियंत्रण अनुक्रम को समझता है, तो टर्मिनल रंग के मूल्य के साथ वापस उत्तर देगा। यदि रंग संख्या समर्थित नहीं है या यदि टर्मिनल इस नियंत्रण अनुक्रम को नहीं समझता है, तो टर्मिनल कुछ भी नहीं जवाब देता है। यहाँ बश / zsh स्निपेट क्वेरी के लिए है कि क्या रंग 42 समर्थित है (यदि आवश्यक हो तो टर्मिनल से अनुप्रेषित):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

VTE लाइब्रेरी (गनोम-टर्मिनल, टर्मिनेटर, Xfce4- टर्मिनल,…) पर आधारित लोकप्रिय टर्मिनलों, एक्सट्रीम और टर्मिनलों में से इस नियंत्रण अनुक्रम का समर्थन करते हैं; Rxvt, konsole, स्क्रीन और tmux नहीं।

मैं और अधिक प्रत्यक्ष तरीके से नहीं जानता।


धन्यवाद @ गिल्स। यह बहुत अच्छा लग रहा है। क्या मैं पूछ सकता हूँ read -d $'\a' -s -t 1?
एमिलियो वाज़केज़-रीना

1
@intrpc \a1 सेकंड के टाइमआउट के साथ, इको इनपुट के बिना, पहले (घंटी चरित्र) तक इनपुट पढ़ें ।
गिल्स एसओ- बुराई को रोकना '

5
@ l0b0 tput colorsशब्दाडंबर डेटाबेस से पूछताछ करता है। संभावना है कि आपके पास है TERM=xterm। Xterm कम से कम 2, 8, 16, 88 या 256 रंगों को संस्करण के आधार पर और संकलन और रन-टाइम विकल्पों के आधार पर समर्थन कर सकता है, लेकिन टर्मो डेटाबेस केवल एक मूल्य को संग्रहीत कर सकता है। आप उदा। सेट कर सकते हैं TERM=xterm+256color, लेकिन तब आप उस मशीन से लॉग इन करने पर नाराज होंगे, जिसके पास इसके टर्मकैप / टर्मोफ डेटाबेस में यह प्रविष्टि नहीं है।
गाइल्स का SO- बुराई से दूर रहना '

2
@ l0b0 आपके पाइप का स्पष्ट रूप से टर्मिनल से कोई लेना-देना नहीं है। आपको टर्मिनल ( printf … >/dev/tty) पर प्रिंट करना होगा और फिर टर्मिनल ( read … </dev/tty) से पढ़ना होगा । Xterm OSC 4; …; ? BELकीस्ट्रोक्स को इंजेक्ट करके अनुक्रम का जवाब देता है ।
गिल्स एसओ- बुराई को रोकना '


11

एक पर्ल स्क्रिप्ट है, 256colors2.pl , जो आपके टर्मिनल पर सभी रंगों को प्रदर्शित करेगा।


3
Google कोड ऑफ़लाइन होने के साथ, यह एक विकल्प लगता है: gist.github.com/hSATAC/1095100
jippie


9

आप उपयोग कर सकते हैं

$ tput colors

मेरे डेबियन इंस्टॉल पर tput ncurses-binपैकेज का हिस्सा है जो डिफ़ॉल्ट रूप से स्थापित होता है।


6
यह केवल यह TERMTERM
बताएगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.