एस्केप सीक्वेंस: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
[[कंप्यूटर विज्ञान]] में, एक एस्केप अनुक्रम [[ चरित्र (कंप्यूटिंग) |वर्णों (कंप्यूटिंग)]] का एक संयोजन है जिसका उसमें निहित शाब्दिक वर्णों के अतिरिक्त कोई अर्थ होता है;<ref>{{cite web  
[[कंप्यूटर विज्ञान]] में, एक एस्केप अनुक्रम [[ चरित्र (कंप्यूटिंग) |वर्णों (कंप्यूटिंग)]] का एक संयोजन है जिसका उसमें निहित शाब्दिक वर्णों के अतिरिक्त कोई अर्थ होता है;<ref>{{cite web  
   |title=बचने का क्रम|url=https://www.spss-tutorials.com/escape-sequence}}</ref> यह एक या अधिक पूर्ववर्ती (और संभवतः समाप्त होने वाले) वर्णों द्वारा चिह्नित है।<ref>{{cite web  
   |title=बचने का क्रम|url=https://www.spss-tutorials.com/escape-sequence}}</ref> इस प्रकार यह एक या अधिक पूर्ववर्ती (और संभवतः समाप्त होने वाले) वर्णों द्वारा चिह्नित है।<ref>{{cite web  
   |title=पात्र|work=The Java Tutorials |url=https://docs.oracle.com/javase/tutorial/java/data/characters.html}}</ref>
   |title=पात्र|work=The Java Tutorials |url=https://docs.oracle.com/javase/tutorial/java/data/characters.html}}</ref>
== उदाहरण ==
== उदाहरण ==
* C (प्रोग्रामिंग भाषाओं) और कई व्युत्पन्न [[सी (प्रोग्रामिंग भाषा)]], एक स्ट्रिंग एस्केप अनुक्रम दो या दो से अधिक वर्णों की एक श्रृंखला है, C में एस्केप अनुक्रम | बैकस्लैश <code>\</code> से प्रारंभ होता है।<ref>{{cite web  
* C (प्रोग्रामिंग भाषाओं) और कई व्युत्पन्न [[सी (प्रोग्रामिंग भाषा)]], एक स्ट्रिंग एस्केप अनुक्रम दो या दो से अधिक वर्णों की एक श्रृंखला है, सी में एस्केप अनुक्रम बैकस्लैश <code>\</code> से प्रारंभ होता है।<ref>{{cite web  
   |quote=Character combinations consisting of a backslash <code>\</code> followed by a letter or by a combination of digits are called ''escape sequences''.  
   |quote=Character combinations consisting of a backslash <code>\</code> followed by a letter or by a combination of digits are called ''escape sequences''.  
   |title=Escape Sequences  
   |title=Escape Sequences  
Line 19: Line 19:


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


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


सभी नियंत्रण अनुक्रमों में एस्केप कैरेक्टर का उपयोग नहीं किया जाता है; उदाहरण के लिए:
सभी नियंत्रण अनुक्रमों में एस्केप कैरेक्टर का उपयोग नहीं किया जाता है; उदाहरण के लिए:
Line 28: Line 28:
* [[डेटा जनरल]] टर्मिनल कंट्रोल अनुक्रम,<ref name="Data_General_Terminals"/><ref name="Kermit"/><ref name="DG210"/>किन्तु उन्हें अधिकांशतः अभी भी एस्केप अनुक्रम कहा जाता था और प्रोग्रामिंग भाषाओं और कमांड-लाइन पैरामीटर में एस्केपिंग विशेष वर्णों का बहुत आम उपयोग आज अधिकांशतः अनुक्रम प्रारंभ करने के लिए बैकस्लैश वर्ण का उपयोग करता है।
* [[डेटा जनरल]] टर्मिनल कंट्रोल अनुक्रम,<ref name="Data_General_Terminals"/><ref name="Kermit"/><ref name="DG210"/>किन्तु उन्हें अधिकांशतः अभी भी एस्केप अनुक्रम कहा जाता था और प्रोग्रामिंग भाषाओं और कमांड-लाइन पैरामीटर में एस्केपिंग विशेष वर्णों का बहुत आम उपयोग आज अधिकांशतः अनुक्रम प्रारंभ करने के लिए बैकस्लैश वर्ण का उपयोग करता है।


संचार में एस्केप अनुक्रम का सामान्यतः तब उपयोग किया जाता है जब एक कंप्यूटर और एक पेरिफेरल में केवल एक ही चैनल होता है जिसके माध्यम से सूचना को आगे और पीछे भेजा जाता है (इसलिए एस्केप अनुक्रम [[इन-बैंड सिग्नलिंग]] का एक उदाहरण है)।<ref name="Dict"/><ref name="Terminal_Handbook"/>वे आम थे जब अधिकांश [[गूंगा टर्मिनल|मूक टर्मिनल]] संचार के लिए 7 डेटा बिट्स के साथ [[ASCII|एएससीआईआई]] का उपयोग करते थे और कभी-कभी "विदेशी" या ग्राफिक्स वर्णों के लिए एक अलग वर्ण सेट पर स्विच करने के लिए उपयोग किया जाता था जो अन्यथा 7 डेटा बिट्स में उपलब्ध 128 कोड द्वारा प्रतिबंधित होते थे। यहां तक ​​कि अपेक्षाकृत "मूर्ख" टर्मिनलों ने भी कुछ एस्केप अनुक्रमों पर प्रतिक्रिया व्यक्त की, जिसमें मूल यांत्रिक टेलेटाइप प्रिंटर (जिस पर "ग्लास टेलेटाइप्स" या वीडीयू आधारित थे) ने अक्षरों और आंकड़े मोड के बीच वैकल्पिक करने के लिए वर्ण 27 और 31 पर प्रतिक्रिया दी।
संचार में एस्केप अनुक्रम का सामान्यतः तब उपयोग किया जाता है जब एक कंप्यूटर और एक पेरिफेरल में केवल एक ही चैनल होता है जिसके माध्यम से सूचना को आगे और पीछे भेजा जाता है (इसलिए एस्केप अनुक्रम [[इन-बैंड सिग्नलिंग]] का एक उदाहरण है)।<ref name="Dict"/><ref name="Terminal_Handbook"/> इस प्रकार वे आम थे जब अधिकांश [[गूंगा टर्मिनल|मूक टर्मिनल]] संचार के लिए 7 डेटा बिट्स के साथ [[ASCII|एएससीआईआई]] का उपयोग करते थे और कभी-कभी "विदेशी" या ग्राफिक्स वर्णों के लिए एक अलग वर्ण सेट पर स्विच करने के लिए उपयोग किया जाता था जो अन्यथा 7 डेटा बिट्स में उपलब्ध 128 कोड द्वारा प्रतिबंधित होते थे। यहां तक ​​कि अपेक्षाकृत "मूर्ख" टर्मिनलों ने भी कुछ एस्केप अनुक्रमों पर प्रतिक्रिया व्यक्त की, जिसमें मूल यांत्रिक टेलेटाइप प्रिंटर (जिस पर "ग्लास टेलेटाइप्स" या वीडीयू आधारित थे) ने अक्षरों और आंकड़े मोड के बीच वैकल्पिक करने के लिए वर्ण 27 और 31 पर प्रतिक्रिया दी।


== कीबोर्ड ==
== कीबोर्ड ==
एक एस्केप कैरेक्टर सामान्यतः [[कंप्यूटर कीबोर्ड]] पर एस्केप कुंजी को असाइन किया जाता है और एस्केप अनुक्रम के हिस्से के अतिरिक्त अन्य तरीकों से भेजा जा सकता है। उदाहरण के लिए, एस्केप कुंजी का उपयोग [[vi]] जैसे संपादकों में एक इनपुट वर्ण के रूप में किया जा सकता है‚<ref name="VI"/>या कुछ अनुप्रयोगों में मेनू में एक स्तर का बैकअप लेने के लिए उपयोग करते हैं।<ref name="PCWorld_2009"/>हेवलेट पैकार्ड एचपी 2640 टर्मिनलों में "डिस्प्ले फ़ंक्शंस" मोड के लिए एक कुंजी थी जो [[डिबगिंग]] अनुप्रयोगों में सहायता के लिए एस्केप सहित सभी नियंत्रण वर्णों के लिए ग्राफ़िक्स प्रदर्शित करेगी।
एक एस्केप कैरेक्टर सामान्यतः [[कंप्यूटर कीबोर्ड]] पर एस्केप कुंजी को असाइन किया जाता है और एस्केप अनुक्रम के हिस्से के अतिरिक्त अन्य तरीकों से भेजा जा सकता है। इस प्रकार उदाहरण के लिए, एस्केप कुंजी का उपयोग [[vi|वीआई]] जैसे संपादकों में एक इनपुट वर्ण के रूप में किया जा सकता है‚<ref name="VI"/>या कुछ अनुप्रयोगों में मेनू में एक स्तर का बैकअप लेने के लिए उपयोग करते हैं।<ref name="PCWorld_2009"/> इस प्रकार हेवलेट पैकार्ड एचपी 2640 टर्मिनलों में "डिस्प्ले फ़ंक्शंस" मोड के लिए एक कुंजी थी जो [[डिबगिंग]] अनुप्रयोगों में सहायता के लिए एस्केप सहित सभी नियंत्रण वर्णों के लिए ग्राफ़िक्स प्रदर्शित करेगी।


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


एस्केप अनुक्रम कम से कम 1874 के [[बॉडॉट कोड]] के समय के हैं।<ref name="Economist_2013"/><ref name="Baudot"/><ref name="TC304"/>
एस्केप अनुक्रम कम से कम 1874 के [[बॉडॉट कोड]] के समय के हैं।<ref name="Economist_2013"/><ref name="Baudot"/><ref name="TC304"/>
== मॉडेम नियंत्रण ==
== मॉडेम नियंत्रण ==
उदाहरण के लिए, हेस कमांड सेट एकल एस्केप अनुक्रम‚ [[+++ (मॉडेम)]] को परिभाषित करता है, (+++ की व्याख्या करने के लिए, जो डेटा का एक हिस्सा हो सकता है, एस्केप अनुक्रम के रूप में, प्रेषक +++ के पहले और बाद में एक सेकंड के लिए संचार बंद कर देता है।) जब मॉडेम डेटा की एक धारा में इसका सामना करता है, तो यह ऑपरेशन के अपने सामान्य मोड से स्विच करता है, जो फोन पर किसी भी अक्षर को कमांड मोड में भेजता है, जिसमें निम्नलिखित डेटा को कमांड भाषा का हिस्सा माना जाता है। आप ओ कमांड भेजकर ऑनलाइन मोड पर स्विच कर सकते हैं।
उदाहरण के लिए, हेस कमांड सेट एकल एस्केप अनुक्रम‚ [[+++ (मॉडेम)]] को परिभाषित करता है, (+++ की व्याख्या करने के लिए, जो डेटा का एक हिस्सा हो सकता है, एस्केप अनुक्रम के रूप में, प्रेषक +++ के पहले और बाद में एक सेकंड के लिए संचार बंद कर देता है।) जब मॉडेम डेटा की एक धारा में इसका सामना करता है, तो यह ऑपरेशन के अपने सामान्य मोड से स्विच करता है, जो फोन पर किसी भी अक्षर को कमांड मोड में भेजता है, जिसमें निम्नलिखित डेटा को कमांड भाषा का हिस्सा माना जाता है। इस प्रकार आप ओ कमांड भेजकर ऑनलाइन मोड पर स्विच कर सकते हैं।


हेस कमांड सेट [[मोड (यूजर इंटरफेस)]] है, कमांड मोड से ऑनलाइन मोड में स्विच हो रहा है।<ref name="Modem_2011"/><ref name="Modem_Programming"/>यह उस स्थितियोंमें उचित नहीं है जहां कमांड और डेटा तेजी से आगे और पीछे स्विच करेंगे। एक गैर-मोडल एस्केप अनुक्रम कंट्रोल भाषाओं का एक उदाहरण [[VT100|वीटी100]] है, जो एक [[ नियंत्रण अनुक्रम परिचयकर्ता |नियंत्रण अनुक्रम परिचयकर्ता]] द्वारा प्रीफ़िक्स्ड कमांड की एक श्रृंखला का उपयोग करता है।
हेस कमांड सेट [[मोड (यूजर इंटरफेस)]] है, कमांड मोड से ऑनलाइन मोड में स्विच हो रहा है।<ref name="Modem_2011"/><ref name="Modem_Programming"/>यह उस स्थितियोंमें उचित नहीं है जहां कमांड और डेटा तेजी से आगे और पीछे स्विच करेंगे। इस प्रकार एक गैर-मोडल एस्केप अनुक्रम कंट्रोल भाषाओं का एक उदाहरण [[VT100|वीटी100]] है, जो एक [[ नियंत्रण अनुक्रम परिचयकर्ता |नियंत्रण अनुक्रम परिचयकर्ता]] द्वारा प्रीफ़िक्स्ड कमांड की एक श्रृंखला का उपयोग करता है।


== नियंत्रण वर्णों के साथ तुलना ==
== नियंत्रण वर्णों के साथ तुलना ==
Line 45: Line 45:


== एएससीआईआई वीडियो डेटा टर्मिनल ==
== एएससीआईआई वीडियो डेटा टर्मिनल ==
[[VT52|वीटी52]] टर्मिनल ने एस्केप-ए जैसे सरल [[डिग्राफ (कंप्यूटिंग)]] कमांड का उपयोग किया: अलगाव में, "ए" का अर्थ केवल "ए" अक्षर था, किन्तु एस्केप अनुक्रम "एस्केप-ए" के हिस्से के रूप में, इसका एक अलग अर्थ था। वीटी52 ने मापदंडों का भी समर्थन किया: यह प्रतिस्थापन के रूप में एन्कोड की गई एक सीधी नियंत्रण भाषा नहीं थी।
[[VT52|वीटी52]] टर्मिनल ने एस्केप-ए जैसे सरल [[डिग्राफ (कंप्यूटिंग)]] कमांड का उपयोग किया: अलगाव में, "ए" का अर्थ केवल "ए" अक्षर था, किन्तु एस्केप अनुक्रम "एस्केप-ए" के हिस्से के रूप में, इसका एक अलग अर्थ था। इस प्रकार वीटी52 ने मापदंडों का भी समर्थन किया: यह प्रतिस्थापन के रूप में एन्कोड की गई एक सीधी नियंत्रण भाषा नहीं थी।


बाद के वीटी100 टर्मिनल ने कर्सर की गति को नियंत्रित करने, कैरेक्टर सेट और डिस्प्ले एन्हांसमेंट जैसे कार्यों के लिए अधिक परिष्कृत [[एएनएसआई एस्केप सीक्वेंस|एएनएसआई एस्केप अनुक्रम]] मानक (अब ऐक्मा-48) लागू किया। हेवलेट पैकार्ड एचपी 2640 श्रृंखला में ब्लॉक और कैरेक्टर मोड, प्रोग्रामिंग कुंजी और उनके सॉफ्ट लेबल, ग्राफिक्स वैक्टर और यहां तक कि टेप या डिस्क फ़ाइलों में डेटा को सहेजने के लिए संभवतः सबसे विस्तृत एस्केप अनुक्रम थे।
बाद के वीटी100 टर्मिनल ने कर्सर की गति को नियंत्रित करने, कैरेक्टर सेट और डिस्प्ले एन्हांसमेंट जैसे कार्यों के लिए अधिक परिष्कृत [[एएनएसआई एस्केप सीक्वेंस|एएनएसआई एस्केप अनुक्रम]] मानक (अब ऐक्मा-48) लागू किया। इस प्रकार हेवलेट पैकार्ड एचपी 2640 श्रृंखला में ब्लॉक और कैरेक्टर मोड, प्रोग्रामिंग कुंजी और उनके सॉफ्ट लेबल, ग्राफिक्स वैक्टर और यहां तक कि टेप या डिस्क फ़ाइलों में डेटा को सहेजने के लिए संभवतः सबसे विस्तृत एस्केप अनुक्रम थे।


'''डॉस और विंडोज़ में उपयोग करें'''
'''डॉस और विंडोज़ में उपयोग करें'''
Line 53: Line 53:
एक उपयोगिता, ANSI.SYS,<ref>{{cite book
एक उपयोगिता, ANSI.SYS,<ref>{{cite book
   |title=17. Understanding ANSI.SYS - Special Edition Using MS-DOS 6.22
   |title=17. Understanding ANSI.SYS - Special Edition Using MS-DOS 6.22
   |url=https://www.oreilly.com/library/view/special-edition-using/0789725738/ch17.html}}</ref> DOS के अनुसार एएनएसआई (ऐक्मा-48) टर्मिनल एस्केप अनुक्रम [[की]] व्याख्या को सक्षम करने के लिए उपयोग किया जा सकता है (का उपयोग करके) <code>$e</code> तत्पर (DOS कमांड) कमांड में) या 16-बिट [[ खिड़कियाँ |खिड़कियाँ]] में कमांड विंडो में। [[जीयूआई]] अनुप्रयोगों के उदय, जो सीधे कार्ड प्रदर्शित करने के लिए लिखते हैं, ने माइक्रोसॉफ्ट प्लेटफॉर्म पर एस्केप अनुक्रम के उपयोग को बहुत कम कर दिया है, किन्तु उनका उपयोग अभी भी कैरेक्टर-आधारित लाइब्रेरी रूटीन के साथ इंटरएक्टिव रैंडम-एक्सेस कैरेक्टर-आधारित स्क्रीन इंटरफेस बनाने के लिए किया जा सकता है। जीयूआई प्रोग्राम का सहारा लिए बिना [[printf|प्रिंट एफ]] के रूप में कर सकते हैं।
   |url=https://www.oreilly.com/library/view/special-edition-using/0789725738/ch17.html}}</ref> DOS के अनुसार एएनएसआई (ऐक्मा-48) टर्मिनल एस्केप अनुक्रम [[की]] व्याख्या को सक्षम करने के लिए उपयोग किया जा सकता है (का उपयोग करके) <code>$e</code> तत्पर (DOS कमांड) कमांड में) या 16-बिट [[ खिड़कियाँ |खिड़कियाँ]] में कमांड विंडो में। [[जीयूआई]] अनुप्रयोगों के उदय, जो सीधे कार्ड प्रदर्शित करने के लिए लिखते हैं, ने माइक्रोसॉफ्ट प्लेटफॉर्म पर एस्केप अनुक्रम के उपयोग को बहुत कम कर दिया है, किन्तु उनका उपयोग अभी भी कैरेक्टर-आधारित लाइब्रेरी रूटीन के साथ इंटरएक्टिव रैंडम-एक्सेस कैरेक्टर-आधारित स्क्रीन इंटरफेस बनाने के लिए किया जा सकता है। इस प्रकार जीयूआई प्रोग्राम का सहारा लिए बिना [[printf|प्रिंटएफ]] के रूप में कर सकते हैं।


===लिनक्स और यूनिक्स डिस्प्ले में प्रयोग ===
===लिनक्स और यूनिक्स डिस्प्ले में प्रयोग ===
डिफ़ॉल्ट टेक्स्ट टर्मिनल और टेक्स्ट विंडो (जैसे [[xterm|एक्सटर्म]] का उपयोग करना) एएनएसआई एस्केप अनुक्रम का उत्तर देते हैं।
इस प्रकार डिफ़ॉल्ट टेक्स्ट टर्मिनल और टेक्स्ट विंडो (जैसे [[xterm|एक्सटर्म]] का उपयोग करना) एएनएसआई एस्केप अनुक्रम का उत्तर देते हैं।


== उद्धरण पलायन ==
== उद्धरण पलायन ==


=== सिंहावलोकन ===
=== अवलोकन ===
जब उद्धृत/एस्केप्ड स्ट्रिंग के भीतर एक एस्केप कैरेक्टर की आवश्यकता होती है, तो प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं में दो रणनीतियों का उपयोग किया जाता है:
जब उद्धृत/एस्केप्ड स्ट्रिंग के भीतर एक एस्केप कैरेक्टर की आवश्यकता होती है, तो प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं में दो रणनीतियों का उपयोग किया जाता है:
* दोगुना सीमांकक (उदा. <code><nowiki>'He didn''t do it.'</nowiki></code>)<ref name="IEY"/>* सेकेंडरी एस्केप अनुक्रम
* दोगुना सीमांकक (उदा. <code><nowiki>'He didn''t do it.'</nowiki></code>)<ref name="IEY"/>* द्वितीयक पलायन अनुक्रम


उत्तरार्द्ध का एक उदाहरण कैरेट के उपयोग में है (<code>^</code>). उदा. यह आउटपुट आप cmd.exe में कट और पेस्ट के माध्यम से ऐसा कर सकते हैं। (अन्यथा, एम्परसेंड का प्रतिबंधित उपयोग है)<ref name="CMD.a"/>
उत्तरार्द्ध का एक उदाहरण कैरेट (<code>^</code>) का उपयोग है। उदा. यह आउटपुट आप cmd.exe में कट और पेस्ट के माध्यम से ऐसा कर सकते हैं। (अन्यथा, एम्परसेंड का उपयोग प्रतिबंधित है)<ref name="CMD.a"/>


इको आप कट ^ और पेस्ट के माध्यम से ऐसा कर सकते हैं
इको आप कट ^ और पेस्ट के माध्यम से ऐसा कर सकते हैं
Line 87: Line 87:
</syntaxhighlight>
</syntaxhighlight>
इच्छित आउटपुट उत्पन्न करता है।
इच्छित आउटपुट उत्पन्न करता है।
एक अन्य विकल्प:
एक अन्य विकल्प:
<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">

Revision as of 13:52, 28 June 2023

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

उदाहरण

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

नियंत्रण अनुक्रम

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

इस प्रकार एएनएसआई टर्मिनलों की प्रारंभ के साथ अधिकांश एस्केप अनुक्रम दो अक्षरों "ईएससी" और फिर "[" या कोड 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++, जावा (प्रोग्रामिंग भाषाओं), और रूबी (प्रोग्रामिंग भाषा) सभी समान दो बैकस्लैश एस्केप स्टाइल की अनुमति देते हैं। परिशिष्ट भाग भाषा और माइक्रोसॉफ्ट रिच टेक्स्ट फ़ॉर्मैट भी बैकस्लैश एस्केप का उपयोग करते हैं। उद्धृत-मुद्रित करने योग्य एन्कोडिंग बराबर चिह्न का उपयोग बचने वाले वर्ण के रूप में करता है।

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

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

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

यह भी देखें

संदर्भ

  1. "बचने का क्रम".
  2. "पात्र". The Java Tutorials.
  3. "Escape Sequences". Character combinations consisting of a backslash \ followed by a letter or by a combination of digits are called escape sequences.
  4. "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. [...]
  5. "एस्केप सीक्वेंस". IBM.
  6. "Chapter 5 – AT Commands" (PDF).
  7. "AT Command Set and Register Summary for Analog Modem Modules".
  8. "Data General terminals: discussion of".
  9. "What's a Terminal?".
  10. "Data General DG210 DG211 Terminal Emulation Software".
  11. "Escape sequence".
  12. "Terminals & Printers Handbook Glossary".
  13. "Twelve Useful "vi" Commands". vi commands […] Pressing the Esc (Escape) key is how you […]
  14. "Five Unexpected Uses for the Esc Key". PCworld. 2009-10-29.
  15. "What is ASCII? The Economist explains". The Economist. 2013-06-09.
  16. "Baudot and CCITT code". The Baudot code, invented in 1870 and patented in 1874 by J. Baudot is […]
  17. "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
  18. "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
  19. "Modem Programming Basics". When a modem is in command mode, the modem can accept commands from you
  20. 17. Understanding ANSI.SYS - Special Edition Using MS-DOS 6.22.
  21. 21.0 21.1 "Apostrophe Editing ('aaa') (FORTRAN 77 Language Reference)". Within the field, two consecutive apostrophes […]
  22. 22.0 22.1 "CMD - Batch - Escaping with Caret".