\ ई और ^ के बीच का अंतर


15

गाइल्स ने लिखा :

चरित्र 27 = 033 = 0x1b = ^[=\e

डेमीज़े ने लिखा :

^ [केवल ESCAPE का एक प्रतिनिधित्व है और \ e को एक वास्तविक ESCAPE वर्ण के रूप में व्याख्या किया जाता है

तब मुझे यह लाइन एक TechRepublic लेख से भी मिली

सुनिश्चित करें कि आप ^ [24] के बजाय \ e [24 ~ के रूप में प्रमुख अनुक्रम लिखते हैं। इसका कारण यह है कि ^ [अनुक्रम [Esc] कुंजी के बराबर है, जिसे शेल में \ e द्वारा दर्शाया गया है। इसलिए, उदाहरण के लिए, यदि कुंजी अनुक्रम ^ था [[ओपी जिसके परिणामस्वरूप बाइंड कोड का उपयोग करने के लिए \ e [ओपी होगा।

लेकिन मैं उपयोग करने वाले मैपिंग का उपयोग कर रहा हूं ^ [e के बजाय ^।

तो क्या वे विनिमेय हैं? मुझे दूसरे के बजाय एक का उपयोग करने की आवश्यकता कब है?

जवाबों:


16

यदि आप ANSI ASCII मानक पर एक नज़र डालते हैं , तो वर्ण सेट का निचला भाग (पहले 32) "नियंत्रण वर्ण" (कभी-कभी "एस्केप अनुक्रम" के रूप में संदर्भित) आरक्षित होते हैं। ये एनयूएल चरित्र, लाइफ फीड, कैरिज रिटर्न, टैब, बेल, आदि जैसी चीजें हैं Ctrl। एक अन्य कुंजी के साथ संयोजन में कुंजी दबाकर विशाल बहुमत का अनुकरण किया जा सकता है ।

27 (दशमलव) या \033अष्टाधारी अनुक्रम, या 0x1bहेक्स अनुक्रम है भागने अनुक्रम। वे सभी एक ही नियंत्रण अनुक्रम के प्रतिनिधि हैं। अलग-अलग गोले, भाषा और उपकरण इस क्रम को अलग-अलग तरीकों से संदर्भित करते हैं। इसका Ctrlक्रम है Ctrl- [इसलिए, कभी-कभी ^[, ^एक छोटे से हाथ के रूप में प्रतिनिधित्व किया जा रहा है Ctrl

आप उन्हें के साथ आगे बढ़ने के द्वारा अपने कमांड लाइन पर एक कच्चे दृश्यों के रूप में नियंत्रण चरित्र दृश्यों दर्ज कर सकते हैं Ctrl- vCtrl- vअधिकांश गोले और कार्यक्रम निम्नलिखित प्रमुख अनुक्रम की व्याख्या को रोकते हैं और इसके बजाय इसके कच्चे रूप में आवेषण करते हैं। यदि आप Escapeकुंजी के साथ ऐसा करते हैं या Ctrl- vयह अधिकांश शेल पर प्रदर्शित करेगा ^[। हालाँकि, हालांकि इस अनुक्रम की व्याख्या हो जाएगी, यह आसानी से कट और पेस्ट नहीं करेगा, और कुछ प्रोटोकॉल या कार्यक्रमों द्वारा सामना किए जाने पर एक गैर नियंत्रण वर्ण अनुक्रम में कम हो सकता है।

इसे उपयोग में आसान बनाने के लिए इसके आस-पास जाने के लिए, कुछ उपयोगिताओं " \033ऑक्टल संदर्भ " (हेक्साल संदर्भ) के साथ \x1bया विशेष वर्ण संदर्भ द्वारा "कच्चे" अनुक्रम का प्रतिनिधित्व करती हैं \e। यह बहुत तरह से है कि में एक ही है \tएक के रूप में व्याख्या की है Tabजो वैसे भी माध्यम से इनपुट हो सकता है - Ctrl- i, या \nनई पंक्ति या के रूप में Enterकुंजी है, जो भी माध्यम से इनपुट हो सकता है Ctrl- m

तो जब गिल्स कहते हैं:

27 = 033 = 0x1b = ^ [= \ e

उन्होंने दशमलव ASCII 27, अष्टाधारी 33, हेक्स 1b कह रहा है, Ctrl- [और \eसब बराबर वह मतलब है कि वे सभी एक ही बात (शब्दार्थ) का संदर्भ लें।

जब डेमीज़े कहते हैं

^ [केवल ESCAPE का एक प्रतिनिधित्व है और \ e को एक वास्तविक ESCAPE वर्ण के रूप में व्याख्या किया जाता है

उन्होंने कहा कि अर्थ की दृष्टि से इसका मतलब है, लेकिन अगर आप प्रेस Ctrl- v Ctrl- [यह बिल्कुल के रूप में एक ही है \e, कच्चे डाला अनुक्रम सबसे अधिक संभावना है उसी तरह व्यवहार किया जाएगा, लेकिन यह हमेशा इसकी गारंटी नहीं है, और यह प्रोग्राम के रूप में अधिक पोर्टेबल उपयोग करने के लिए सिफारिश की तो \eया 0x1bया \033निर्भर करता है उपयोग की जा रही भाषा / शेल / उपयोगिता पर।


4

ये सभी उस चरित्र का प्रतिनिधित्व करते हैं जिसका उपयोग कुछ सॉफ्टवेयर या कुछ मनुष्य करते हैं। मैंने सबसे आम लोगों को सूचीबद्ध किया। यदि आप एक मानव से बात कर रहे हैं, तो जो कुछ भी वे समझेंगे उसका उपयोग करें। (जाहिर तौर पर मेरा प्रयास यह सुनिश्चित करने के लिए है कि आप इनमें से कम से कम एक बैकफ़ायर को समझेंगे।) यदि आप सॉफ़्टवेयर से बात कर रहे हैं, तो यह जानने के लिए दस्तावेज़ से परामर्श करें कि यह क्या समझता है।

बैश, भागने दृश्यों में \e, \033और \x1bएक तर्क के रूप में काम करते हैं printf, में $'…', संकेतों में, और कुंजी बाइंडिंग में। कुंजी बाइंडिंग में, एक अधिक सामान्य सिंटैक्स होता है \C-[जो काम करता है क्योंकि वर्ण 27 वह है जो आपको टाइपिंग Ctrl+ से प्राप्त होता है [(जो सिंटैक्स इमैक कुंजी बाइंडिंग का एक अनुकरण है)। \033एक तर्क के रूप में सभी गोले में काम करता है printf; अन्य संदर्भ और संकेतन शेल-निर्भर हैं।

स्क्रीन इनमें से किसी भी भागने के क्रम को नहीं पहचानती है, लेकिन ^नियंत्रण उपसर्ग के रूप में पहचानती है , इसलिए ^[इसका मतलब है चरित्र 27।

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