एस्केप सीक्वेंस

कंप्यूटर विज्ञान में, एक एस्केप सीक्वेंस चरित्र (कंप्यूटिंग)  का एक संयोजन है जिसका अर्थ उसमें निहित शाब्दिक वर्णों के अलावा होता है; यह एक या अधिक पूर्ववर्ती (और संभवतः समाप्त होने वाले) वर्णों द्वारा चिह्नित है।

उदाहरण

 * C (प्रोग्रामिंग लैंग्वेज) और कई व्युत्पन्न सी (प्रोग्रामिंग भाषा), एक स्ट्रिंग एस्केप सीक्वेंस दो या दो से अधिक वर्णों की एक श्रृंखला है, C में एस्केप सीक्वेंस | बैकस्लैश से शुरू होता है.
 * ध्यान दें कि सी में एक बैकस्लैश के तुरंत बाद एक नई लाइन नहीं एक एस्केप अनुक्रम का गठन करती है, लेकिन दूसरे अनुवाद चरण में भौतिक स्रोत लाइनों को तार्किक रूप से विभाजित करती है, जबकि स्ट्रिंग एस्केप अनुक्रम पांचवें में परिवर्तित हो जाते हैं। अनुवाद चरण।
 * स्वयं बैकस्लैश वर्ण का प्रतिनिधित्व करने के लिए,  का उपयोग किया जा सकता है, जिससे पहला बैकस्लैश एस्केप इंगित करता है और दूसरा निर्दिष्ट करता है कि बैकस्लैश एस्केप किया जा रहा है।
 * एक पात्र को कई अलग-अलग तरीकों से छोड़ा जा सकता है। एएससीआईआई एन्कोडिंग मानते हुए, बचने के क्रम  (हेक्साडेसिमल), ,   ( अष्टभुजाकार ) और   सभी एक ही वर्ण को कूटबद्ध करते हैं: बैकस्लैश.
 * उन उपकरणों के लिए जो एएनएसआई एस्केप कोड अनुक्रमों का जवाब देते हैं, एएससीआईआई एस्केप कैरेक्टर (दशमलव वर्ण कोड 27) से शुरू होने वाले तीन या अधिक वर्णों का संयोजन और उसके बाद बाएं-कोष्ठक वर्ण  (दशमलव वर्ण कोड 91) एक पलायन क्रम को परिभाषित करता है।

नियंत्रण अनुक्रम
निर्देशित होने पर चरित्र (कंप्यूटिंग) की इस श्रृंखला का उपयोग कंप्यूटर और उनके संलग्न परिधीय उपकरणों की स्थिति (कंप्यूटर विज्ञान) को बदलने के लिए किया जाता है, बजाय नियमित डेटा (कंप्यूटिंग) बाइट्स के रूप में प्रदर्शित या मुद्रित होने के लिए, इन्हें नियंत्रण के रूप में भी जाना जाता है सीक्वेंस, खेल नियंत्रक  में उनके उपयोग को दर्शाते हुए, कंट्रोल सीक्वेंस इनिशियेटर के साथ शुरू - मूल रूप से एस्केप कैरेक्टर ASCII कोड - कैरेक्टर 27 (दशमलव) - अक्सर  keycap ्स पर Esc लिखा जाता है।

एएनएसआई टर्मिनलों की शुरुआत के साथ अधिकांश एस्केप सीक्वेंस दो अक्षर ईएससी के साथ शुरू हुए, फिर [या एक कोड 155 (दशमलव) के साथ एक विशेष रूप से आवंटित सीएसआई चरित्र।

सभी नियंत्रण दृश्यों में एस्केप कैरेक्टर का उपयोग नहीं किया जाता है; उदाहरण के लिए:
 * एटी/हेस कमांड सेट द्वारा उपयोग किए जाने वाले मॉडेम नियंत्रण अनुक्रम। हेस-संगत मोडेम


 * डेटा जनरल टर्मिनल कंट्रोल सीक्वेंस, लेकिन उन्हें अक्सर अभी भी एस्केप सीक्वेंस कहा जाता था, और प्रोग्रामिंग लैंग्वेज और कमांड-लाइन पैरामीटर में एस्केपिंग विशेष वर्णों का बहुत आम उपयोग आज अक्सर अनुक्रम शुरू करने के लिए बैकस्लैश वर्ण का उपयोग करता है।

संचार में एस्केप सीक्वेंस का आमतौर पर उपयोग किया जाता है जब एक कंप्यूटर और एक पेरिफेरल में केवल एक ही चैनल होता है जिसके माध्यम से सूचना को आगे और पीछे भेजा जाता है (इसलिए एस्केप सीक्वेंस इन-बैंड सिग्नलिंग का एक उदाहरण है)। वे आम थे जब अधिकांश गूंगा टर्मिनल संचार के लिए 7 डेटा बिट्स के साथ ASCII का उपयोग करते थे, और कभी-कभी विदेशी या ग्राफिक्स वर्णों के लिए एक अलग वर्ण सेट पर स्विच करने के लिए उपयोग किया जाता था जो अन्यथा 7 डेटा बिट्स में उपलब्ध 128 कोड द्वारा प्रतिबंधित होता। यहां तक ​​कि अपेक्षाकृत गूंगे टर्मिनलों ने भी मूल मैकेनिकल टेलेटाइप प्रिंटर (जिस पर ग्लास टेलेटाइप्स या वीडीयू आधारित थे) सहित कुछ एस्केप सीक्वेंस का जवाब दिया, अक्षर और अंक मोड के बीच वैकल्पिक करने के लिए 27 और 31 वर्णों का जवाब दिया।

कीबोर्ड
एक एस्केप कैरेक्टर आमतौर पर कंप्यूटर कीबोर्ड पर Esc कुंजी को असाइन किया जाता है, और एस्केप सीक्वेंस के हिस्से के अलावा अन्य तरीकों से भेजा जा सकता है। उदाहरण के लिए, Esc कुंजी का उपयोग vi जैसे संपादकों में एक इनपुट वर्ण के रूप में किया जा सकता है। या कुछ अनुप्रयोगों में मेनू में एक स्तर का बैकअप लेने के लिए। Hewlett Packard HP 2640 टर्मिनलों में डिस्प्ले फ़ंक्शन मोड के लिए एक कुंजी थी जो डिबगिंग अनुप्रयोगों में सहायता के लिए Esc सहित सभी नियंत्रण वर्णों के लिए ग्राफ़िक्स प्रदर्शित करेगी।

यदि एस्केप सीक्वेंस भेजने वाली Esc कुंजी और अन्य कुंजियाँ दोनों एक अनुप्रयोग के लिए सार्थक मानी जाती हैं, तो एक अस्पष्टता उत्पन्न होती है यदि एक वर्ण टर्मिनल उपयोग में है। जब एप्लिकेशन को ASCII एस्केप कैरेक्टर प्राप्त होता है, तो यह स्पष्ट नहीं होता है कि क्या वह कैरेक्टर Esc कुंजी दबाने वाले उपयोगकर्ता का परिणाम है या क्या यह एस्केप सीक्वेंस का प्रारंभिक कैरेक्टर है (उदाहरण के लिए, एरो की प्रेस के परिणामस्वरूप)। अस्पष्टता को हल करने का पारंपरिक तरीका यह निरीक्षण करना है कि कोई अन्य चरित्र जल्दी से भागने वाले चरित्र का अनुसरण करता है या नहीं। यदि नहीं, तो यह माना जाता है कि यह एस्केप सीक्वेंस का हिस्सा नहीं है। यह अनुमानी कुछ परिस्थितियों में विफल हो सकता है, विशेष रूप से तेज आधुनिक संचार गति के बिना।

एस्केप सीक्वेंस कम से कम 1874 बॉडॉट कोड के हैं।

मॉडेम नियंत्रण
हेस कमांड सेट, उदाहरण के लिए, एकल एस्केप सीक्वेंस को परिभाषित करता है, +++ (मॉडेम)|+++। (+++ की व्याख्या करने के लिए, जो डेटा का एक हिस्सा हो सकता है, एस्केप सीक्वेंस के रूप में, प्रेषक +++ के पहले और बाद में एक सेकंड के लिए संचार बंद कर देता है।) जब मॉडेम डेटा की एक धारा में इसका सामना करता है, तो यह ऑपरेशन के अपने सामान्य मोड से स्विच करता है, जो फोन पर किसी भी अक्षर को कमांड मोड में भेजता है, जिसमें निम्नलिखित डेटा को कमांड भाषा का हिस्सा माना जाता है। आप ओ कमांड भेजकर ऑनलाइन मोड में वापस आ सकते हैं।

हेस कमांड सेट मोड (यूजर इंटरफेस) है, कमांड मोड से ऑनलाइन मोड में स्विच करना। यह उस मामले में उचित नहीं है जहां कमांड और डेटा तेजी से आगे और पीछे स्विच करेंगे। एक गैर-मोडल एस्केप सीक्वेंस कंट्रोल लैंग्वेज का एक उदाहरण VT100 है, जो एक  नियंत्रण अनुक्रम परिचयकर्ता  द्वारा प्रीफ़िक्स्ड कमांड की एक श्रृंखला का उपयोग करता है।

नियंत्रण वर्णों के साथ तुलना
एक नियंत्रण चरित्र एक ऐसा चरित्र है, जो अलगाव में, कुछ नियंत्रण कार्य करता है, जैसे कैरिज रिटर्न (सीआर)। इसके विपरीत एस्केप सीक्वेंस में एक या एक से अधिक पलायनवादी चरित्र  होते हैं जो बाद के कैरेक्टर की व्याख्या को बदल देते हैं।

ASCII वीडियो डेटा टर्मिनल
VT52 टर्मिनल ने एस्केप-ए जैसे सरल डिग्राफ (कंप्यूटिंग) कमांड का इस्तेमाल किया: अलगाव में, ए का मतलब अक्षर ए था, लेकिन एस्केप सीक्वेंस एस्केप-ए के हिस्से के रूप में, इसका एक अलग अर्थ था। VT52 भी पैरामीटर का समर्थन करता है: यह प्रतिस्थापन के रूप में एन्कोडेड सीधी नियंत्रण भाषा नहीं थी।

बाद के VT100 टर्मिनल ने अधिक परिष्कृत एएनएसआई एस्केप सीक्वेंस मानक (अब ECMA-48) को क्रियान्वित किया, जैसे कि कर्सर की गति को नियंत्रित करना, कैरेक्टर सेट और डिस्प्ले एन्हांसमेंट। Hewlett Packard HP 2640 श्रृंखला में ब्लॉक और कैरेक्टर मोड, प्रोग्रामिंग कुंजियों और उनके सॉफ्ट लेबल, ग्राफिक्स वैक्टर और यहां तक ​​कि टेप या डिस्क फ़ाइलों में डेटा को सहेजने के लिए शायद सबसे विस्तृत एस्केप सीक्वेंस थे।

डॉस और विंडोज
में प्रयोग करें एक उपयोगिता, ANSI.SYS, DOS के तहत ANSI (ECMA-48) टर्मिनल एस्केप सीक्वेंस की व्याख्या को सक्षम करने के लिए इस्तेमाल किया जा सकता है (का उपयोग करके)  PROMPT (DOS कमांड) कमांड में) या 16-बिट  खिड़कियाँ  में कमांड विंडो में। जीयूआई अनुप्रयोगों के उदय, जो सीधे कार्ड प्रदर्शित करने के लिए लिखते हैं, ने माइक्रोसॉफ्ट प्लेटफॉर्म पर एस्केप सीक्वेंस के उपयोग को बहुत कम कर दिया है, लेकिन उनका उपयोग अभी भी कैरेक्टर-आधारित लाइब्रेरी रूटीन के साथ इंटरएक्टिव रैंडम-एक्सेस कैरेक्टर-आधारित स्क्रीन इंटरफेस बनाने के लिए किया जा सकता है। GUI प्रोग्राम का सहारा लिए बिना printf के रूप में।

लिनक्स और यूनिक्स डिस्प्ले में प्रयोग
डिफ़ॉल्ट टेक्स्ट टर्मिनल और टेक्स्ट विंडो (जैसे xterm का उपयोग करना) ANSI एस्केप सीक्वेंस का जवाब देते हैं।

सिंहावलोकन
जब उद्धृत/एस्केप्ड स्ट्रिंग के भीतर एक एस्केप कैरेक्टर की आवश्यकता होती है, तो प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं में दो रणनीतियों का उपयोग किया जाता है:
 * दोगुना सीमांकक (उदा. ) * सेकेंडरी एस्केप सीक्वेंस

उत्तरार्द्ध का एक उदाहरण कैरेट के उपयोग में है. उदा. यह आउटपुट आप cmd.exe में कट और पेस्ट के माध्यम से ऐसा कर सकते हैं। (अन्यथा, एम्परसेंड का प्रतिबंधित उपयोग है)

इको आप कट ^ और पेस्ट के माध्यम से ऐसा कर सकते हैं

विस्तार से
एस्केप सीक्वेंस का एक सामान्य उपयोग वास्तव में बाइनरी डेटा स्ट्रीम में पाए जाने वाले नियंत्रण वर्णों को हटाने के लिए है ताकि वे गलती से अपने नियंत्रण कार्य का कारण न बनें। इस मामले में, नियंत्रण चरित्र को परिभाषित एस्केप कैरेक्टर (जो US-ASCII एस्केप कैरेक्टर नहीं होना चाहिए) और एक या अधिक अन्य कैरेक्टर द्वारा प्रतिस्थापित किया जाता है; संदर्भ से बाहर निकलने के बाद जहां नियंत्रण चरित्र एक क्रिया का कारण बनता है, अनुक्रम को पहचाना जाता है और हटाए गए चरित्र द्वारा प्रतिस्थापित किया जाता है। एस्केप कैरेक्टर को ही ट्रांसमिट करने के लिए दो कॉपी भेजी जाती हैं।

कई प्रोग्रामिंग भाषा  और कमांड लाइन इंटरफेस में  अक्षर शाब्दिक  और  शाब्दिक स्ट्रिंग  में एस्केप सीक्वेंस का इस्तेमाल उन कैरेक्टर्स को व्यक्त करने के लिए किया जाता है जो प्रिंट करने योग्य नहीं हैं या कैरेक्टर या स्ट्रिंग्स के सिंटैक्स से टकराते हैं। उदाहरण के लिए, नियंत्रण वर्णों को संपादक प्रोग्राम द्वारा कोडित प्रोग्राम में रखने की अनुमति नहीं दी जा सकती है, या कमांड में टाइप किए जाने पर अवांछित दुष्प्रभाव हो सकते हैं। एंड-ऑफ़-कोट चरित्र भी प्रोग्रामर के लिए एक समस्या है जिसे इससे बचकर हल किया जा सकता है। अधिकांश संदर्भों में एस्केप कैरेक्टर बैकस्लैश ( \ ) है।

नमूने
उदाहरण के लिए, एकल उद्धरण चिह्न वर्ण के रूप में व्यक्त किया जा सकता है  लिखने के बाद से   स्वीकार्य नहीं है।

कई आधुनिक प्रोग्रामिंग भाषाएं दोहरे उद्धरण चिह्न निर्दिष्ट करती हैं एक स्ट्रिंग शाब्दिक के लिए सीमांकक के रूप में। बैकस्लैश एस्केप कैरेक्टर आमतौर पर स्ट्रिंग लिटरल के अंदर डबलकोट्स को शामिल करने के तरीके प्रदान करता है, जैसे कि स्ट्रिंग में एम्बेडेड डबलकोट कैरेक्टर के अर्थ को संशोधित करके, या दोहरे उद्धरण वर्ण के हेक्साडेसिमल मान सहित वर्णों के अनुक्रम के अर्थ को संशोधित करके. दोनों अनुक्रम एक शाब्दिक दोहरे उद्धरण को कूटबद्ध करते हैं.

पर्ल या पायथन (प्रोग्रामिंग भाषा) में 2 एक सिंटैक्स त्रुटि उत्पन्न करता है, जबकि: इच्छित आउटपुट उत्पन्न करता है। एक अन्य विकल्प: निम्नलिखित दो वर्ण हेक्साडेसिमल अंक हैं, यह इंगित करने के लिए \x का उपयोग करता है, 22 हेक्साडेसिमल में दोहरे उद्धरण के लिए ASCII मान है।

C (प्रोग्रामिंग लैंग्वेज), C++, Java (प्रोग्रामिंग लैंग्वेज), और रूबी (प्रोग्रामिंग भाषा)  सभी समान दो बैकस्लैश एस्केप स्टाइल की अनुमति देते हैं।  परिशिष्ट भाग  भाषा और माइक्रोसॉफ्ट  रिच टेक्स्ट फ़ॉर्मैट  भी बैकस्लैश एस्केप का उपयोग करते हैं। उद्धृत-मुद्रित करने योग्य एन्कोडिंग बराबर चिह्न का उपयोग बचने वाले वर्ण के रूप में करता है।

URL और URI एक विशेष अर्थ वाले वर्णों को उद्धृत करने के लिए प्रतिशत-एन्कोडिंग का उपयोग करते हैं, जैसा कि गैर-ASCII वर्णों के लिए होता है।

एक अन्य समान (और आंशिक रूप से अतिव्यापी) वाक्य-विन्यास चाल है स्ट्रॉपिंग (वाक्यविन्यास)।

कुछ प्रोग्रामिंग लैंग्वेज विशेष वर्णों को शाब्दिक रूप से प्रस्तुत करने के अन्य तरीके भी प्रदान करती हैं, बिना एस्केप कैरेक्टर की आवश्यकता के (उदाहरण के लिए सीमांकक टक्कर देखें)।

यह भी देखें

 * नियंत्रण चरित्र
 * पलायनवादी चरित्र
 * प्रिंटफ प्रारूप स्ट्रिंग
 * प्रारूप (सामान्य लिस्प)