कंसोल प्रोग्राम आम तौर पर उस शाप या इसके उत्तराधिकारी में से एक का उपयोग करते हैं, जिस तरह के टेक्स्ट यूजर इंटरफेस के बारे में आप बात कर रहे हैं।
ये लाइब्रेरी दो डेटाबेसों में से एक का उपयोग करती हैं, जिन्हें कहा जाता है termcap
और। terminfo
Databases इन डेटाबेस में नक्शे होते हैं जो लाइब्रेरी को बताते हैं कि बड़ी संख्या में विविध टर्मिनल प्रकारों के साथ वांछित कार्यों को प्राप्त करने के लिए कौन से कोड भेजने हैं। इन डेटाबेसों में आपके द्वारा परिभाषित टर्मिनल प्रकारों का अधिकांश हिस्सा वास्तविक टर्मिनलों के दिनों में नहीं बचा था , और इसलिए अब केवल ऐतिहासिक हित हैं।
ANSI टर्मिनल
आधुनिक यूनिक्स टर्मिनल एमुलेटर्स ANSI X3.64 प्रोटोकॉल या इसके बाद के किसी एक संस्करण का उपयोग करते हैं:
एएनएसआई X3.64 : "कांच टर्मिनलों" नियंत्रित करने के लिए एक मानक - के रूप में करने का विरोध किया teletypes - यह वर्ण जो रिमोट टर्मिनल की व्याख्या की विशेष दृश्यों पर आधारित है। उदाहरण के लिए, यदि यूनिक्स बॉक्स अपने कर्सर को स्क्रीन के ऊपरी बाएँ कोने में ले जाने के लिए एक ANSI X3.64 संगत टर्मिनल बताना चाहता है, तो यह पात्रों को भेजता हैESC
[
1
;
1
H
। पहले दो वर्ण टर्मिनल को एक नियंत्रण अनुक्रम की उम्मीद करते हैं, 1s पंक्ति और स्तंभ हैं, औरH
कमांड का अर्थ है "चाल"। Move
सामान्य ज्ञान: कई पीसी BBS ने ANSI कोड का भी उपयोग किया। ( अभी भी करते हैं , वास्तव में।)
DEC VT100 : डिजिटल उपकरण निगम के VT100 में पहला वास्तव में लोकप्रिय एएनएसआई-संगत ग्लास टर्मिनल था। बाजार में एएनएसआई के डे जुरे मानक को साबित करके , इसने एक वास्तविक मानक स्थापित किया जो आज भी महत्वपूर्ण है।
कभी-कभी आप इसे वीटी 102 प्रोटोकॉल कहते हैं, जो बाद में लागत-कम होने के कारण - और इसलिए अधिक लोकप्रिय - वीटी 100 का संस्करण और सभी उपलब्ध विस्तार विकल्प अंतर्निहित हैं।
दिसम्बर टर्मिनल प्रोटोकॉल, एक पीछे की ओर संगत श्रृंखला पहले एएनएसआई-संगत मॉडल VT500 श्रृंखला द्वारा निर्मित मॉडलों के माध्यम से 1978 (VT100) अप में पेश से विस्तार असीम टेक्नोलॉजीज के बाद वे 1995 में DEC से टर्मिनल व्यापार खरीदा (असीम है अब व्यापार से बाहर है, लेकिन उनके टर्मिनल अभी भी समय-समय पर उपयोग किए जाने वाले बाजार में पॉप अप करते हैं।)
xterm : ANSI और VT-जो भी मानकों का एक प्रकार का समामेलन है। जब भी आप किसी GUI टर्मिनल एमुलेटर का उपयोग कर रहे हैं जैसे किxterm
या उसके किसी एक डेरिवेटिव के साथ, तो आप आमतौर परxterm
टर्मिनल प्रोटोकॉल, आमतौर पर अधिक आधुनिकxterm-color
याxterm-color256
वेरिएंटका उपयोग कर रहे हैं।
लिनक्स : लिनक्स कंसोल एएनएसआई टर्मिनल प्रोटोकॉल के विस्तारित संस्करण का भी उपयोग करता है, उसी भावना में जोxterm
प्रोटोकॉल में है। इसके अधिकांश एक्सटेंशनों में एक पीसी और एक ग्लास टर्मिनल के बीच अंतर होता है। उदाहरण के लिए, आईबीएम कीबोर्ड में डीईसी वीटी-जो कुछ भी नहीं है, पर कुछ चाबियाँ हैं। (और इसके विपरीत।)
कुछ यूनिक्स प्रणालियों का अपना कंसोल टर्मिनल प्रोटोकॉल भी है। नहीं है scoansi
एससीओ Unixes के लिए एएनएसआई X3.64 संस्करण उदाहरण के लिए,।
एक विशिष्ट टर्मिनल एमुलेटर प्रोग्राम एक मोंगरेल का कुछ है, और किसी भी एकल टर्मिनल मॉडल का बिल्कुल अनुकरण नहीं करता है। यह VT320 के माध्यम से सभी DEC VT से बचने के अनुक्रम का 96% समर्थन कर सकता है, फिर भी ANSI रंग (VT525 सुविधा) और मनमाने ढंग से पंक्तियों और स्तंभों जैसे एक्सटेंशन का समर्थन करता है। यदि आपके कार्यक्रमों को उन विशेषताओं की आवश्यकता नहीं है, भले ही आपने curses
(या जो भी) कहा हो कि वे इसे VT320 प्रोटोकॉल का उपयोग करने के लिए उपयोग करने वाले प्रोग्राम चाहते हैं , तो 4% कोड यह नहीं समझ सकते हैं । ऐसा कार्यक्रम खुद को VT320 के रूप में संगत कर सकता है, फिर भी, कड़ाई से बोलने के बावजूद, यह नहीं है
गैर-एएनएसआई टर्मिनल
कुछ अन्य उल्लेखनीय मानक हैं जो आप अभी भी कभी-कभी आते हैं:
वायस : ग्लास टर्मिनलों के सबसे शुरुआती स्वतंत्र उत्पादकों में से एक, वायस ने 1980 के दशक की शुरुआत में वर्कस्टेशन कंप्यूटिंग से पहलेमिनीकॉमर्स को विस्थापित करना शुरू किया था। यद्यपि वायस टर्मिनल VT100 और अन्य लोकप्रिय टर्मिनल प्रोटोकॉल का अनुकरण करने में सक्षम थे, लेकिन उनके पास अपने स्वयं के मूल कोड भी थे।
आईबीएम 3270 : हालांकि यह कड़ाई से "यूनिक्स" टर्मिनल प्रकार नहीं है, यूनिक्स सिस्टम को आईबीएम मेनफ्रेम से जोड़ने की आवश्यकता के कारण आईबीएम 3270 श्रृंखला टर्मिनल एमुलेटर प्रोग्राम का निर्माण हुआ, जिसे आप अभी भी उपयोग में पा सकते हैं। बाद के आईबीएम 5250 श्रृंखला टर्मिनलों केलिए एमुलेटरभी काफी सामान्य हैं, जो कि अक्सर इन दिनों एएस / 400 और सिस्टम आईकॉम्पिककनेक्ट करने के लिए उपयोग किया जाता है।
Tektronix 4014 : पीसी और वर्कस्टेशन से पहले बड़े पैमाने पर ग्लास टर्मिनलों को विस्थापित किया गया और इस तरह से बिटमैप मैप ग्राफिक्स को एक मानक फीचर बनाया गया, महंगे ग्राफिक्स टर्मिनल थे जो ऊपर दिए गए एस्केप सीक्वेंस के समान टेक्स्ट कमांड के जवाब में स्क्रीन पर ग्राफिक्स को आकर्षित करते थे। संभवतः इनमें से सबसे लोकप्रिय टेक्ट्रोनिक्स 4010 श्रृंखला थी।
वे उपयोग करने में काफी मज़ेदार थे। आप एक प्रोग्राम लिख सकते हैं, जो एक ग्राफिक को आकर्षित करता है, लेकिन फिर इसे केवल अपने स्थानीय टर्मिनल पर आकर्षित करने के लिए चलाने के बजाय, आप इसके आउटपुट को एक फ़ाइल में पुनर्निर्देशित कर सकते हैं:
$ ./my4014program > my-neat-graphic
फिर आप उस फ़ाइल को किसी और को भेज सकते हैं, और वे cat
अपने Tek टर्मिनल पर ग्राफिक को देखने के लिए आपके कार्यक्रम के बिना कर सकते हैं। आकर्षण का एक हिस्सा यह था कि ये टर्मिनल ड्राइंग में कितने धीमे थे, जिससे आप कई सेकंड में ग्राफिक बिल्ड को देख सकते थे।
यूनिक्स टर्मिनल एमुलेशन के साथ आज काम करना
आप यह पा सकते हैं कि आप पर्यावरण के चर curses
को देखकर लाइब्रेरियों से कौन से टर्मिनल मानक का उपयोग करना चाहते हैं TERM
:
$ echo $TERM
xterm-color
जब आप ssh
किसी अन्य सिस्टम पर आते हैं, तो TERM
वैरिएबल साथ ले जाया जाता है ताकि रिमोट यूनिक्स बॉक्स को पता हो कि आपके स्थानीय टर्मिनल के साथ कैसे संवाद किया जाए।
क्योंकि इनमें से बहुत से प्रोटोकॉल ANSI X3.64 वैरिएंट हैं, और क्योंकि सर्वव्यापी ASCII और UTF-8 कैरेक्टर कोडिंग मानकों का बहुत अधिक ध्यान रखते हैं, एक गलत TERM
वैरिएबल आमतौर पर भयावह नहीं होता है। जो चीजें टूटने लगती हैं, वे हैं होम और पेज अप की तरह विस्तारित कुंजी, अल्ट-जो भी प्रमुख संयोजन, और टाइपोग्राफिक डिस्प्ले जैसे रंग, बोल्डफेस, आदि।
फुटनोट:
सबसे अधिक, ncurses ।
curses
एपीआई के लिए एकमुश्त प्रतिस्पर्धी भी हैं , जैसे कि एस-लैंग ।
एटी एंड टी terminfo
को बीएसडी के termcap
डेटाबेस के प्रतिस्थापन के रूप में घोषित किया गया था, और यह इसे बदलने में काफी हद तक सफल रहा, लेकिन अभी भी ऐसे कार्यक्रम हैं जो अभी भी पुराने termcap
डेटाबेस का उपयोग करते हैं । यह कई बीएसडी बनाम एटीएंडटी अंतरों में से एक है जो आप अभी भी आधुनिक प्रणालियों पर पा सकते हैं।
मेरा macOS बॉक्स नहीं है /etc/termcap
, लेकिन यह है /usr/share/terminfo
, जबकि FreeBSD की एक मानक स्थापना चारों ओर विपरीत तरीका है, भले ही ये दोनों OS कमांड लाइन स्तर पर काफी समान हैं।
minicom
, xterm
, mintty
, सूक्ति टर्मिनल , Terminal.app , आदि
उचित रूप से लिखे गए यूनिक्स प्रोग्राम इन एस्केप सीक्वेंसों का सीधे उत्सर्जन नहीं करते हैं। इसके बजाय, वे ऊपर बताए गए पुस्तकालयों में से एक का उपयोग करते हैं, यह "कर्सर को स्थिति (1,1)" या जो कुछ भी करने के लिए कहते हैं, और पुस्तकालय आपके TERM
पर्यावरण चर सेटिंग के आधार पर आवश्यक टर्मिनल नियंत्रण कोड का उत्सर्जन करता है । यह प्रोग्राम को ठीक से काम करने की अनुमति देता है, भले ही आप इसे किस टर्मिनल प्रकार पर चलाते हों।
पुराने पाठ टर्मिनलों में बहुत सारी अजीब विशेषताएं थीं, जिन्हें कार्यक्रमों द्वारा बहुत अधिक उपयोग नहीं मिला, इसलिए कई लोकप्रिय टर्मिनल एमुलेटर प्रोग्राम केवल इन सुविधाओं को लागू नहीं करते हैं। सामान्य चूक छह ग्राफिक्स और डबल-चौड़ाई / डबल-ऊंचाई पाठ मोड के लिए समर्थन हैं।
की देखभाल करने वाले xterm
एक कार्यक्रम बुलाया लिखा था vttest
वीटी जैसे टर्मिनल emulators के परीक्षण के लिए xterm
। आप इसका पता लगाने के लिए अन्य टर्मिनल एमुलेटर के खिलाफ इसे चला सकते हैं कि वे किन विशेषताओं का समर्थन नहीं करते हैं।