टर्मिनलों द्वारा किस प्रोटोकॉल / मानक का उपयोग किया जाता है?


25

मैं सोच रहा था कि एक नेटवर्क पर कमांड लाइन एप्लिकेशन के "जीयूआई" का संचार कैसे किया जाता है। अधिकांश समय, यह काफी सरल (सादा पाठ / इनपुट) होता है, लेकिन कभी-कभी यह अधिक जटिल (एप्टीट्यूड) होता है।

क्या इसे किसी प्रकार के मानक द्वारा परिभाषित किया गया है ताकि कोई भी अपना स्वयं का टर्मिनल लिख सके और यह कि सभी टर्मिनल कार्यान्वयन एक ही तरीके (रंग, स्थिति, आदि) का व्यवहार करते हैं?

जवाबों:


46

कंसोल प्रोग्राम आम तौर पर उस शाप या इसके उत्तराधिकारी में से एक का उपयोग करते हैं, जिस तरह के टेक्स्ट यूजर इंटरफेस के बारे में आप बात कर रहे हैं।

ये लाइब्रेरी दो डेटाबेसों में से एक का उपयोग करती हैं, जिन्हें कहा जाता है termcapऔर। terminfoDatabases इन डेटाबेस में नक्शे होते हैं जो लाइब्रेरी को बताते हैं कि बड़ी संख्या में विविध टर्मिनल प्रकारों के साथ वांछित कार्यों को प्राप्त करने के लिए कौन से कोड भेजने हैं। इन डेटाबेसों में आपके द्वारा परिभाषित टर्मिनल प्रकारों का अधिकांश हिस्सा वास्तविक टर्मिनलों के दिनों में नहीं बचा था , और इसलिए अब केवल ऐतिहासिक हित हैं।

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वैरिएबल आमतौर पर भयावह नहीं होता है। जो चीजें टूटने लगती हैं, वे हैं होम और पेज अप की तरह विस्तारित कुंजी, अल्ट-जो भी प्रमुख संयोजन, और टाइपोग्राफिक डिस्प्ले जैसे रंग, बोल्डफेस, आदि।


फुटनोट:

  1. सबसे अधिक, ncurses

    cursesएपीआई के लिए एकमुश्त प्रतिस्पर्धी भी हैं , जैसे कि एस-लैंग

  2. एटी एंड टी terminfoको बीएसडी के termcapडेटाबेस के प्रतिस्थापन के रूप में घोषित किया गया था, और यह इसे बदलने में काफी हद तक सफल रहा, लेकिन अभी भी ऐसे कार्यक्रम हैं जो अभी भी पुराने termcapडेटाबेस का उपयोग करते हैं । यह कई बीएसडी बनाम एटीएंडटी अंतरों में से एक है जो आप अभी भी आधुनिक प्रणालियों पर पा सकते हैं।

    मेरा macOS बॉक्स नहीं है /etc/termcap, लेकिन यह है /usr/share/terminfo, जबकि FreeBSD की एक मानक स्थापना चारों ओर विपरीत तरीका है, भले ही ये दोनों OS कमांड लाइन स्तर पर काफी समान हैं।

  3. minicom, xterm, mintty, सूक्ति टर्मिनल , Terminal.app , आदि

  4. उचित रूप से लिखे गए यूनिक्स प्रोग्राम इन एस्केप सीक्वेंसों का सीधे उत्सर्जन नहीं करते हैं। इसके बजाय, वे ऊपर बताए गए पुस्तकालयों में से एक का उपयोग करते हैं, यह "कर्सर को स्थिति (1,1)" या जो कुछ भी करने के लिए कहते हैं, और पुस्तकालय आपके TERMपर्यावरण चर सेटिंग के आधार पर आवश्यक टर्मिनल नियंत्रण कोड का उत्सर्जन करता है । यह प्रोग्राम को ठीक से काम करने की अनुमति देता है, भले ही आप इसे किस टर्मिनल प्रकार पर चलाते हों।

  5. पुराने पाठ टर्मिनलों में बहुत सारी अजीब विशेषताएं थीं, जिन्हें कार्यक्रमों द्वारा बहुत अधिक उपयोग नहीं मिला, इसलिए कई लोकप्रिय टर्मिनल एमुलेटर प्रोग्राम केवल इन सुविधाओं को लागू नहीं करते हैं। सामान्य चूक छह ग्राफिक्स और डबल-चौड़ाई / डबल-ऊंचाई पाठ मोड के लिए समर्थन हैं।

    की देखभाल करने वाले xtermएक कार्यक्रम बुलाया लिखा था vttestवीटी जैसे टर्मिनल emulators के परीक्षण के लिए xterm। आप इसका पता लगाने के लिए अन्य टर्मिनल एमुलेटर के खिलाफ इसे चला सकते हैं कि वे किन विशेषताओं का समर्थन नहीं करते हैं।

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