एस्केप सीक्वेंस
कंप्यूटर विज्ञान में, एस्केप अनुक्रम वर्णों (कंप्यूटिंग) का संयोजन है जिसका उसमें निहित शाब्दिक वर्णों के अतिरिक्त कोई अर्थ होता है।[1] इस प्रकार यह या अधिक पूर्ववर्ती (और संभवतः समाप्त होने वाले) वर्णों द्वारा चिह्नित है।[2]
उदाहरण
- सी (प्रोग्रामिंग भाषाओं) और कई व्युत्पन्न सी (प्रोग्रामिंग भाषा), स्ट्रिंग एस्केप अनुक्रम दो या दो से अधिक वर्णों की श्रृंखला है, सी में एस्केप अनुक्रम बैकस्लैश
\
से प्रारंभ होता है।[3]- ध्यान दें कि सी में बैकस्लैश के तुरंत बाद नई लाइन एस्केप अनुक्रम का गठन नहीं करती है, किन्तु दूसरे अनुवाद चरण में भौतिक स्रोत लाइनों को तार्किक में विभाजित करती है, जबकि स्ट्रिंग एस्केप अनुक्रम पांचवें अनुवाद चरण में परिवर्तित हो जाते हैं।[4]
- स्वयं बैकस्लैश वर्ण का प्रतिनिधित्व करने के लिए,
\\
का उपयोग किया जा सकता है, जिससे पहला बैकस्लैश एस्केप इंगित करता है और दूसरा निर्दिष्ट करता है कि बैकस्लैश एस्केप किया जा रहा है।[5] - पात्र को कई भिन्न-भिन्न तरीकों से छोड़ा जा सकता है। एएससीआईआई एन्कोडिंग मानते हुए, बचने के क्रम
\x5c
(हेक्साडेसिमल),\\
,\134
(अष्टभुजाकार ) और\x5C
सभी ही वर्ण को कूटबद्ध करते हैं: बैकस्लैश\
.
- उन उपकरणों के लिए जो एएनएसआई एस्केप कोड अनुक्रमों का उत्तर देते हैं, एएससीआईआई एस्केप कैरेक्टर (दशमलव वर्ण कोड 27) से प्रारंभ होने वाले तीन या अधिक वर्णों का संयोजन और उसके बाद बाएं-कोष्ठक वर्ण
[
(दशमलव वर्ण कोड 91) एस्केप अनुक्रम को परिभाषित करता है।
नियंत्रण अनुक्रम
जब निर्देशित किया जाता है तो वर्णों की इस श्रृंखला का उपयोग नियमित डेटा (कंप्यूटिंग) बाइट्स के रूप में प्रदर्शित या मुद्रित करने के अतिरिक्त कंप्यूटर और उनके संलग्न परिधीय उपकरणों की स्थिति को परिवर्तित करने के लिए किया जाता है, इन्हें नियंत्रण अनुक्रम के रूप में भी जाना जाता है, जो डिवाइस नियंत्रण में उनके उपयोग को दर्शाते हैं, शुरुआत नियंत्रण अनुक्रम आरंभकर्ता के साथ - मूल रूप से "एस्केप कैरेक्टर" एएससीआईआई कोड - कैरेक्टर 27 (दशमलव) - अधिकांशतः कीकैप पर "एस्केप" लिखा होता है।
इस प्रकार एएनएसआई टर्मिनलों की प्रारंभ के साथ अधिकांश एस्केप अनुक्रम दो अक्षरों "ईएससी" और फिर "[" या कोड 155 (दशमलव) के साथ विशेष रूप से आवंटित सीएसआई चरित्र के साथ प्रारंभ हुए।
सभी नियंत्रण अनुक्रमों में एस्केप कैरेक्टर का उपयोग नहीं किया जाता है; उदाहरण के लिए:
- एटी/हेस कमांड समूह द्वारा उपयोग किए जाने वाले मॉडेम नियंत्रण अनुक्रम। हेस-संगत मोडेम[6][7]
- डेटा जनरल टर्मिनल कंट्रोल अनुक्रम,[8][9][10] किन्तु उन्हें अधिकांशतः अभी भी एस्केप अनुक्रम कहा जाता था और प्रोग्रामिंग भाषाओं और कमांड-लाइन पैरामीटर में एस्केपिंग विशेष वर्णों का बहुत आम उपयोग आज अधिकांशतः अनुक्रम प्रारंभ करने के लिए बैकस्लैश वर्ण का उपयोग करता है।
संचार में एस्केप अनुक्रम का सामान्यतः तब उपयोग किया जाता है जब कंप्यूटर और पेरिफेरल में केवल ही चैनल होता है जिसके माध्यम से सूचना को आगे और पीछे भेजा जाता है (इसलिए एस्केप अनुक्रम इन-बैंड सिग्नलिंग का उदाहरण है)।[11][12] इस प्रकार वह सामान्य थे जब अधिकांश मूक टर्मिनल संचार के लिए 7 डेटा बिट्स के साथ एएससीआईआई का उपयोग करते थे और कभी-कभी "विदेशी" या ग्राफिक्स वर्णों के लिए भिन्न वर्ण समूह पर स्विच करने के लिए उपयोग किया जाता था जो अन्यथा 7 डेटा बिट्स में उपलब्ध 128 कोड द्वारा प्रतिबंधित होते थे। यहां तक कि अपेक्षाकृत "मूर्ख" टर्मिनलों ने भी कुछ एस्केप अनुक्रमों पर प्रतिक्रिया व्यक्त की, जिसमें मूल यांत्रिक टेलेटाइप प्रिंटर (जिस पर "ग्लास टेलेटाइप्स" या वीडीयू आधारित थे) ने अक्षरों और आंकड़े मोड के मध्य वैकल्पिक करने के लिए वर्ण 27 और 31 पर प्रतिक्रिया दी।
कीबोर्ड
एस्केप कैरेक्टर सामान्यतः कंप्यूटर कीबोर्ड पर एस्केप कुंजी को असाइन किया जाता है और एस्केप अनुक्रम के हिस्से के अतिरिक्त अन्य तरीकों से भेजा जा सकता है। इस प्रकार उदाहरण के लिए, एस्केप कुंजी का उपयोग वीआई जैसे संपादकों में इनपुट वर्ण के रूप में किया जा सकता है‚[13]या कुछ अनुप्रयोगों में मेनू में स्तर का बैकअप लेने के लिए उपयोग करते हैं।[14] इस प्रकार हेवलेट पैकार्ड एचपी 2640 टर्मिनलों में "डिस्प्ले फ़ंक्शंस" मोड के लिए कुंजी थी जो डिबगिंग अनुप्रयोगों में सहायता के लिए एस्केप सहित सभी नियंत्रण वर्णों के लिए ग्राफ़िक्स प्रदर्शित करेगी।
यदि एस्केप अनुक्रम भेजने वाली एस्केप कुंजी और अन्य कुंजियाँ दोनों अनुप्रयोग के लिए सार्थक मानी जाती हैं, तो अस्पष्टता उत्पन्न होती है यदि वर्ण टर्मिनल उपयोग में है। जब एप्लिकेशन को एएससीआईआई एस्केप कैरेक्टर प्राप्त होता है, तो यह स्पष्ट नहीं होता है कि क्या वह कैरेक्टर एस्केप कुंजी दबाने वाले उपयोगकर्ता का परिणाम है या क्या यह एस्केप अनुक्रम का प्रारंभिक कैरेक्टर है (उदाहरण के लिए, एरो की प्रेस के परिणामस्वरूप)। इस प्रकार अस्पष्टता को हल करने का पारंपरिक विधि यह निरीक्षण करना है कि कोई अन्य चरित्र जल्दी से भागने वाले चरित्र का अनुसरण करता है या नहीं। यदि नहीं, तो यह माना जाता है कि यह एस्केप अनुक्रम का भाग नहीं है। यह अनुमानी कुछ परिस्थितियों विशेष रूप से तेज आधुनिक संचार गति के बिना में विफल हो सकता है।
एस्केप अनुक्रम कम से कम 1874 के बॉडॉट कोड के समय के हैं।[15][16][17]
मॉडेम नियंत्रण
उदाहरण के लिए, हेस कमांड समूह एकल एस्केप अनुक्रम‚ +++ (मॉडेम) को परिभाषित करता है, (+++ की व्याख्या करने के लिए, जो डेटा का भाग हो सकता है, एस्केप अनुक्रम के रूप में, प्रेषक +++ के पहले और बाद में सेकंड के लिए संचार बंद कर देता है।) जब मॉडेम डेटा की धारा में इसका सामना करता है, तो यह ऑपरेशन के अपने सामान्य मोड से स्विच करता है, जो फोन पर किसी भी अक्षर को कमांड मोड में भेजता है, जिसमें निम्नलिखित डेटा को कमांड भाषा का भाग माना जाता है। इस प्रकार आप ओ कमांड भेजकर ऑनलाइन मोड पर स्विच कर सकते हैं।
हेस कमांड समूह मोड (यूजर इंटरफेस) है, कमांड मोड से ऑनलाइन मोड में स्विच हो रहा है।[18][19] यह उस स्थितियोंमें उचित नहीं है जहां कमांड और डेटा तेजी से आगे और पीछे स्विच करेंगे। इस प्रकार गैर-मोडल एस्केप अनुक्रम कंट्रोल भाषाओं का उदाहरण वीटी100 है, जो नियंत्रण अनुक्रम परिचयकर्ता द्वारा प्रीफ़िक्स्ड कमांड की श्रृंखला का उपयोग करता है।
नियंत्रण वर्णों के साथ तुलना
नियंत्रण चरित्र ऐसा चरित्र है, जो भिन्नता में, कुछ नियंत्रण कार्य करता है, जैसे कैरिज रिटर्न (सीआर)। इसके विपरीत एस्केप अनुक्रम में या से अधिक पलायनवादी चरित्र सम्मिलित होते हैं जो बाद के कैरेक्टर की व्याख्या को बदल देते हैं।
एएससीआईआई वीडियो डेटा टर्मिनल
वीटी52 टर्मिनल ने एस्केप-ए जैसे सरल डिग्राफ (कंप्यूटिंग) कमांड का उपयोग किया: भिन्नता में, "ए" का अर्थ केवल "ए" अक्षर था, किन्तु एस्केप अनुक्रम "एस्केप-ए" के हिस्से के रूप में, इसका भिन्न अर्थ था। इस प्रकार वीटी52 ने मापदंडों का भी समर्थन किया: यह प्रतिस्थापन के रूप में एन्कोड की गई सीधी नियंत्रण भाषा नहीं थी।
बाद के वीटी100 टर्मिनल ने कर्सर की गति को नियंत्रित करने, कैरेक्टर समूह और डिस्प्ले एन्हांसमेंट जैसे कार्यों के लिए अधिक परिष्कृत एएनएसआई एस्केप अनुक्रम मानक (अब ऐक्मा-48) प्रयुक्त किया। इस प्रकार हेवलेट पैकार्ड एचपी 2640 श्रृंखला में ब्लॉक और कैरेक्टर मोड, प्रोग्रामिंग कुंजी और उनके सॉफ्ट लेबल, ग्राफिक्स वैक्टर और यहां तक कि टेप या डिस्क फ़ाइलों में डेटा को सहेजने के लिए संभवतः सबसे विस्तृत एस्केप अनुक्रम थे।
डॉस और विंडोज़ में उपयोग करें
उपयोगिता, ANSI.SYS,[20] DOS के अनुसार एएनएसआई (ऐक्मा-48) टर्मिनल एस्केप अनुक्रम की व्याख्या को सक्षम करने के लिए उपयोग किया जा सकता है (का उपयोग करके) $e
तत्पर (DOS कमांड) कमांड में) या 16-बिट खिड़कियाँ में कमांड विंडो में। जीयूआई अनुप्रयोगों के उदय, जो सीधे कार्ड प्रदर्शित करने के लिए लिखते हैं, ने माइक्रोसॉफ्ट प्लेटफॉर्म पर एस्केप अनुक्रम के उपयोग को बहुत कम कर दिया है, किन्तु उनका उपयोग अभी भी कैरेक्टर-आधारित लाइब्रेरी रूटीन के साथ इंटरएक्टिव रैंडम-एक्सेस कैरेक्टर-आधारित स्क्रीन इंटरफेस बनाने के लिए किया जा सकता है। इस प्रकार जीयूआई प्रोग्राम का सहारा लिए बिना प्रिंटएफ के रूप में कर सकते हैं।
लिनक्स और यूनिक्स डिस्प्ले में प्रयोग
इस प्रकार डिफ़ॉल्ट टेक्स्ट टर्मिनल और टेक्स्ट विंडो (जैसे एक्सटर्म का उपयोग करना) एएनएसआई एस्केप अनुक्रम का उत्तर देते हैं।
उद्धरण पलायन
अवलोकन
जब उद्धृत/एस्केप्ड स्ट्रिंग के भीतर एस्केप कैरेक्टर की आवश्यकता होती है, तो प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं में दो रणनीतियों का उपयोग किया जाता है:
- दोगुना सीमांकक (उदा.
'He didn''t do it.'
)[21]* द्वितीयक पलायन अनुक्रम
उत्तरार्द्ध का उदाहरण कैरेट (^
) का उपयोग है। उदा. यह आउटपुट आप cmd.exe में कट और पेस्ट के माध्यम से ऐसा कर सकते हैं। (अन्यथा, एम्परसेंड का उपयोग प्रतिबंधित है)[22]
इको आप कट ^ और पेस्ट के माध्यम से ऐसा कर सकते हैं
विस्तार से
एस्केप अनुक्रम का सामान्य उपयोग वास्तव में बाइनरी डेटा स्ट्रीम में पाए जाने वाले नियंत्रण वर्णों को हटाने के लिए है जिससे कि वे गलती से अपने नियंत्रण कार्य का कारण न बनें। इस स्थितियोंमें, नियंत्रण चरित्र को परिभाषित एस्केप कैरेक्टर (जो यूएस-एएससीआईआई एस्केप कैरेक्टर नहीं होना चाहिए) और या अधिक अन्य कैरेक्टर द्वारा प्रतिस्थापित किया जाता है; संदर्भ से बाहर निकलने के बाद जहां नियंत्रण चरित्र क्रिया का कारण बनता है, अनुक्रम को पहचाना जाता है और हटाए गए चरित्र द्वारा प्रतिस्थापित किया जाता है।[22]एस्केप कैरेक्टर को ही ट्रांसमिट करने के लिए दो कॉपी भेजी जाती हैं।[21]
कई प्रोग्रामिंग भाषा और कमांड लाइन इंटरफेस में अक्षर शाब्दिक और शाब्दिक स्ट्रिंग में एस्केप अनुक्रम का उपयोग उन कैरेक्टर्स को व्यक्त करने के लिए किया जाता है जो प्रिंट करने योग्य नहीं हैं या कैरेक्टर या स्ट्रिंग्स के सिंटैक्स से टकराते हैं। उदाहरण के लिए, नियंत्रण वर्ण को संपादक प्रोग्राम द्वारा कोडित प्रोग्राम में रखने की अनुमति नहीं दी जा सकती है, या कमांड में टाइप किए जाने पर अवांछित दुष्प्रभाव हो सकते हैं। एंड-ऑफ़-कोट चरित्र भी प्रोग्रामर के लिए समस्या है जिसे इससे बचकर हल किया जा सकता है। अधिकांश संदर्भों में एस्केप कैरेक्टर बैकस्लैश ( \ ) है।
नमूने
उदाहरण के लिए, एकल उद्धरण चिह्न वर्ण के रूप में व्यक्त किया जा सकता है '\''
लिखने के बाद से '''
स्वीकार्य नहीं है।
कई आधुनिक प्रोग्रामिंग भाषाएं दोहरे उद्धरण चिह्न निर्दिष्ट करती हैं ("
) स्ट्रिंग शाब्दिक के लिए सीमांकक के रूप में। बैकस्लैश एस्केप कैरेक्टर सामान्यतः स्ट्रिंग लिटरल के अंदर डबलकोट्स को सम्मिलित करने के तरीके प्रदान करता है, जैसे कि स्ट्रिंग में एम्बेडेड डबलकोट कैरेक्टर के अर्थ को संशोधित करके (\"
), या दोहरे उद्धरण वर्ण के हेक्साडेसिमल मान सहित वर्णों के अनुक्रम के अर्थ को संशोधित करके (\x22
). दोनों अनुक्रम शाब्दिक दोहरे उद्धरण को कूटबद्ध करते हैं ("
).
पर्ल या पायथन (प्रोग्रामिंग भाषा) में 2
print "Nancy said "Hello World!" to the crowd.";
सिंटैक्स त्रुटि उत्पन्न करता है, जबकि:
print "Nancy said \"Hello World!\" to the crowd."; ### example of \"
इच्छित आउटपुट उत्पन्न करता है।
अन्य विकल्प:
print "Nancy said \x22Hello World!\x22 to the crowd."; ### example of \x22
निम्नलिखित दो वर्ण हेक्साडेसिमल अंक हैं, यह इंगित करने के लिए \x का उपयोग करता है, 22 हेक्साडेसिमल में दोहरे उद्धरण के लिए एएससीआईआई मान है।
C (प्रोग्रामिंग भाषाओं), C++, जावा (प्रोग्रामिंग भाषाओं), और रूबी (प्रोग्रामिंग भाषा) सभी समान दो बैकस्लैश एस्केप स्टाइल की अनुमति देते हैं। परिशिष्ट भाग भाषा और माइक्रोसॉफ्ट रिच टेक्स्ट फ़ॉर्मैट भी बैकस्लैश एस्केप का उपयोग करते हैं। उद्धृत-मुद्रित करने योग्य एन्कोडिंग बराबर चिह्न का उपयोग बचने वाले वर्ण के रूप में करता है।
यूआरएल और यूआरआई विशेष अर्थ वाले वर्णों को उद्धृत करने के लिए प्रतिशत-एन्कोडिंग का उपयोग करते हैं, जैसा कि गैर-एएससीआईआई वर्णों के लिए होता है।
अन्य समान (और आंशिक रूप से अतिव्यापी) वाक्य-विन्यास चाल है स्ट्रॉपिंग (वाक्यविन्यास)।
कुछ प्रोग्रामिंग भाषाओं विशेष वर्णों को शाब्दिक रूप से प्रस्तुत करने के अन्य तरीके भी प्रदान करती हैं, बिना एस्केप कैरेक्टर की आवश्यकता के (उदाहरण के लिए सीमांकक टक्कर देखें)।
यह भी देखें
- नियंत्रण चरित्र
- पलायनवादी चरित्र
- प्रिंटफ प्रारूप स्ट्रिंग
- प्रारूप (सामान्य लिस्प)
संदर्भ
- ↑ "बचने का क्रम".
- ↑ "पात्र". The Java Tutorials.
- ↑ "Escape Sequences".
Character combinations consisting of a backslash
\
followed by a letter or by a combination of digits are called escape sequences. - ↑ "ISO/IEC 9899:201x Committee Draft N1570" (PDF) (in English).
5.1.1.2 Translation phases, 2.: Each instance of a backslash character (
\
) immediately followed by a new-line character is deleted, splicing physical source lines to form logical source lines. [...] - ↑ "एस्केप सीक्वेंस". IBM.
- ↑ "Chapter 5 – AT Commands" (PDF).
- ↑ "AT Command Set and Register Summary for Analog Modem Modules".
- ↑ "Data General terminals: discussion of".
- ↑ "What's a Terminal?".
- ↑ "Data General DG210 DG211 Terminal Emulation Software".
- ↑ "Escape sequence".
- ↑ "Terminals & Printers Handbook Glossary".
- ↑ "Twelve Useful "vi" Commands".
vi commands […] Pressing the Esc (Escape) key is how you […]
- ↑ "Five Unexpected Uses for the Esc Key". PCworld. 2009-10-29.
- ↑ "What is ASCII? The Economist explains". The Economist. 2013-06-09.
- ↑ "Baudot and CCITT code".
The Baudot code, invented in 1870 and patented in 1874 by J. Baudot is […]
- ↑ "Guide to the use of Character Sets in Europe".
elements C0 and C1 of control characters […] a 5-bit code patented by Jean-Maurice-Emile Baudot (1845-1903) in 1874
- ↑ "Basic Hayes AT Command Set". 2011-02-05.
+++ - "Escape Sequence" - This command initiates an escape sequence to return the modem to the on-line command mode
- ↑ "Modem Programming Basics".
When a modem is in command mode, the modem can accept commands from you
- ↑ 17. Understanding ANSI.SYS - Special Edition Using MS-DOS 6.22.
- ↑ 21.0 21.1 "Apostrophe Editing ('aaa') (FORTRAN 77 Language Reference)".
Within the field, two consecutive apostrophes […]
- ↑ 22.0 22.1 "CMD - Batch - Escaping with Caret".