जवाबों:
setfकेवल 8 रंगों तक सीमित है। setaf256 रंगों को सेट कर सकते हैं।
(सभी निम्न जानकारी urxvt के लिए विशिष्ट होगी, क्योंकि यह मेरा टर्मिनल है, लेकिन जानकारी अन्य टर्मिनलों की तरह ही होगी, यदि नहीं, तो भी ऐसा ही होगा)
दोनों setfऔर setafएक अलग भागने कोड प्रदान करते हैं। आप इसे निम्नलिखित में देख सकते हैं:
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
मेरे urxvt(7)आदमी पृष्ठ से:
"ESC [ Pm m"
Character Attributes (SGR)
...
Pm = 30 / 40 fg/bg Black
Pm = 31 / 41 fg/bg Red
Pm = 32 / 42 fg/bg Green
Pm = 33 / 43 fg/bg Yellow
Pm = 34 / 44 fg/bg Blue
Pm = 35 / 45 fg/bg Magenta
Pm = 36 / 46 fg/bg Cyan
Pm = 37 / 47 fg/bg White
Pm = 38;5 / 48;5 set fg/bg to colour #m (ISO 8613-6)
इस प्रकार उपरोक्त xxdआउटपुट से, हम देख सकते हैं कि इसका tput setf 2उपयोग किया गया है Pm = 32, जो रंग को हरे रंग में सेट करेगा। tput setaf 2दूसरी ओर, का उपयोग करता है Pm = 38;5, जो आईएसओ 8613-6 (भी हरा) में परिभाषित रंग कोड का प्रतिनिधित्व करता है।
आईएसओ 8613-6 में, रंग 0x00-0x07 मानक रंगों के समान हैं, और 0x08 - 0x0f मानक "बोल्ड" रंग हैं। एक बार जब आप 0x10-0xff पर पहुंच जाते हैं तो आपको नए रंग मिलते हैं।
विकिपीडिया से चोरी :
0x00-0x07: standard colors (as in ESC [ 30..37 m)
0x08-0x0f: high intensity colors (as in ESC [ 90..97 m)
0x10-0xe7: 6*6*6=216 colors: 16 + 36*r + 6*g + b (0≤r,g,b≤5)
0xe8-0xff: grayscale from black to white in 24 steps
tputवास्तव में उपलब्ध एएनएसआई रंग-अनुक्रम श्रेणियों का उपयोग नहीं करता है , हालांकि। किसी के लिए n > 7, tput setaf nमेरे टर्मिनल में पाठ पर कोई प्रभाव नहीं है।
tput setf 2और tput setaf 2कर रहे हैं दोनों .[32m ।
मैनुअल से: man 5 terminfo
एक Tektronix प्रकार टर्मिनल, उपयोग पर वर्तमान अग्रभूमि या पृष्ठभूमि रंग बदलने के लिए Setaf (सेट एएनएसआई अग्रभूमि) और setab (सेट एएनएसआई पृष्ठभूमि) या setf (सेट अग्रभूमि) और setb (सेट पृष्ठभूमि)। ये एक पैरामीटर, रंग संख्या लेते हैं। SVr4 प्रलेखन केवल सेटफ / सेटैब का वर्णन करता है ; XPG4 मसौदा कहता है कि "अगर टर्मिनल का समर्थन करता है सेट पृष्ठभूमि और अग्रभूमि करने के लिए एएनएसआई भागने दृश्यों, वे के रूप में कोडित किया जाना चाहिए Setaf और setab , क्रमशः। टर्मिनल का समर्थन करता है सेट पृष्ठभूमि और अग्रभूमि करने के लिए अन्य भागने दृश्यों, वे के रूप में कोडित किया जाना चाहिए setf और setb, क्रमशः। Vidputs () फ़ंक्शन और रिफ्रेश फ़ंक्शन सेटैफ़ और सेटैब का उपयोग करते हैं यदि वे परिभाषित हैं। "
तो जवाब है: Setaf साधन सेट एएनएसआई अग्रभूमि , यानी एएनएसआई भागने दृश्यों का उपयोग करें, और setf का मतलब सेट अग्रभूमि (कुछ बच एएनएसआई के अलावा अन्य दृश्यों का उपयोग)।
क्षमताओं के दो सेट ANSI रंगों की सूची में लाल / नीले रंग के लिए अलग-अलग ऑर्डरिंग का उपयोग करते हैं।
जैसा कि कहा गया है, यह ncurses termfo मैनुअल पेज में समझाया गया है । कुछ इतिहास:
setf/setb।Sf/Sbबजाय कोड setaf/setab(और AF/ABtermcap के लिए) - लेकिन एएनएसआई भागने दृश्यों का उपयोग करते हुए (जो termcap साथ काम) के बजाय का उपयोग करने से सही एएनएसआई क्षमताओं के साथ क्षमताओं।ANSI setaf/setabको टर्मोइफ़ के इतिहास में काफी देर से जोड़ा गया था क्योंकि आप क्षमता स्ट्रिंग्स की सूची में अपनी स्थिति से अनुमान लगा सकते हैं । ध्यान रखें कि उन चरणों को कुछ वर्षों में जोड़ा गया था, और कुछ प्रणालियों में अंतर था (ncurses के कुछ उदाहरण हैं जैसे कि Caps.hpuxउन प्रणालियों से मिलान करने के लिए इसे संकलित करने के लिए)। इसका उपयोग कम संख्या में उपयोगी टर्मिनल विवरणों के लिए किया जाता है, जिन्हें संदर्भ के लिए उपयोग किया जा सकता है।
इन सबके साथ, यह तथ्य कि मौजूदा setf/setbतार एएनएसआई के आदेश से मेल नहीं खाते थे, पर तुरंत ध्यान नहीं दिया गया, जिसके कारण 1998 में कुछ सुधार हुए , और फ़ेक क्यों लाल / नीले परस्पर जुड़े हुए हैं? ।
हालांकि 8-रंग ANSI अनुक्रम को 16-रंगों में विस्तारित करना संभव था (यह मानकर कि 8-15 रंग 0-4 के उज्जवल संस्करण थे), setf/setbपहले 16 रंगों का विस्तार करने के लिए एक योजना का आविष्कार करने का कोई अच्छा कारण नहीं था ।
terminfo(5)आदमी पृष्ठ को देखें जोncursesविवरण के लिए आता है ।