हैश प्रतीकों (#) ने बाइनरी को पूरा करने के बाद पाउंड प्रतीकों (पाउंड) में बदल दिया


42

इस तरह मेरा बैश प्रॉम्प्ट जैसा दिखता था।

पुराने बैश प्रॉम्प्ट

फिर मैंने कुछ किया जो शायद इतना स्मार्ट नहीं था, मैंने किया cat /bin/bash। और अब मेरा बैश प्रॉम्प्ट इस तरह दिखता है, हैश सिंबल (#) के बजाय पाउंड सिंबल (£) के साथ। यह फाइलों के भीतर हैश प्रतीकों को भी प्रभावित करता है, यहां देखें:

फाइलों में पाउंड प्रतीक

किसी भी विचार यह कैसे वापस करने के लिए?

संपादित करें: यह प्रश्न यह नहीं पूछता है कि "मेरे बैश प्रॉम्प्ट को कैसे बदलें?", लेकिन "मेरे बैश प्रॉम्प्ट अपने आप बदल गए, मैं इसे कैसे पुनर्स्थापित कर सकता हूं?"

.bashrcजो इच्छुक हैं, उनके लिए पूरा करें



1
(मैंने शीर्षक को थोड़ा संपादित करने की स्वतंत्रता ली, जो समस्या का कारण बना। संपादित करें या जैसा आप चाहें वैसा ही वापस करें।)
ilkachachu

9
शीघ्र, फ़ाइल आदि अभी भी के लिए चरित्र कोड होता है #, \x23; यह सिर्फ इतना है कि टर्मिनल अब व्याख्या \x23करता है £
13

4
दिलचस्प हिस्सा यह है कि "पाउंड" अमेरिकी में हैश प्रतीक का दूसरा नाम है (और संभवतः अन्य राष्ट्रीयताओं?) अंग्रेजी ... =)
jpmc26

1
यह किस टर्मिनल कार्यक्रम में किया गया था?
SnoringFrog

जवाबों:


102

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

इसके लिए ऐतिहासिक पृष्ठभूमि यह है कि मूल रूप से, टर्मिनलों को स्क्रीन और कीबोर्ड के साथ डंबल डिवाइस थे , और वे सीरियल पोर्ट के माध्यम से वास्तविक कंप्यूटर से जुड़े थे। इससे पहले, वे कीबोर्ड वाले प्रिंटर थे। कमांड बाइट्स से डेटा बाइट्स को अलग करने के लिए कोई प्रोटोकॉल नहीं था, इसलिए टर्मिनल "इनलाइन" को कमांड दिए गए थे। (या यों कहें कि भागने के कोड और नियंत्रण वर्ण प्रोटोकॉल थे।) कोई यह मान सकता है कि अगर आज प्रणाली तैयार की गई थी, तो डेटा और आदेशों के बीच स्पष्ट अलगाव होगा।

टर्मिनल विंडो को बस बंद करने या एमुलेटर को मारने के बजाय, आप resetकमांड का उपयोग कर सकते हैं , जो एक समान कमांड भेजता है (या कई) टर्मिनल को वापस से चूक में रीसेट करने के लिए।

मुझे नहीं पता कि वास्तव में हैश के कारण पाउंड में क्या बदलाव होगा। (लेकिन @ Random832 करता है, उनका उत्तर देखें ।) मैं "वैकल्पिक वर्ण सेट" से अधिक परिचित हूं, जो सभी पात्रों को रेखा-ड्राइंग ग्लिफ़ में बदल सकता है। यहां तक ​​कि अगर ऐसा होता है, तो कीबोर्ड से इनपुट आमतौर पर अपरिवर्तित होता है, इसलिए लेखन तब resetEnterभी काम करता है, भले ही वर्ण कचरा के रूप में प्रदर्शित हों या नहीं। (आपके संकेत की तुलना में लाइनों के एक समूह में बदल जाने के बाद, आपको केवल एक मामूली प्रभाव मिला है।)


1
विस्तृत विवरण के लिए धन्यवाद। जैसे ही प्रतिष्ठा जरूरी हो, मैं वोट डालूंगा।
lhermann

2
जब मैंने पहली बार cat /dev/urandomडेबियन इंस्टॉलेशन कंसोल (स्क्रीन रिज़ॉल्यूशन जो ईंट के हार्डवेयर को दिमाग में लाता है) की कोशिश की, तो मैंने सोचा कि मैं एक अतिप्रवाह ट्रिगर करूँगा, और जल्दी से "सभी परिवर्तनों को छोड़ दें, मशीन को पुनरारंभ करें" बटन पर अपना रास्ता बदल दिया। अब मुझे पता है कि यह एक "इच्छित विशेषता" है।
wizzwizz4 17

2
यह एक ऐतिहासिक रूप से इच्छित विशेषता है जो अब अवांछनीय है। कुछ (सभी अच्छे) टर्मिनल एमुलेटर को यूटीएफ -8 के वातावरण में चलने पर विरासत चरित्र-सेट-स्विच से बचना चाहिए, लेकिन क्या वे ऐसा करते हैं, और यदि आप डिफ़ॉल्ट नहीं है तो ऐसा करने के लिए विकल्प को कैसे सक्रिय करते हैं, खराब दस्तावेज है भिन्न होता है।
आर ..

78

रिकॉर्ड के लिए, यह जवाब देने के लिए कि ऐसा क्यों हुआ और यह टर्मिनल को बंद किए बिना कैसे तय किया जा सकता था (और यदि resetअसफल रहा):

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

इसलिए, जब आप टर्मिनल पर एक बाइनरी फ़ाइल मुद्रित करते हैं, तो यह कुछ संयोग से टर्मिनल के अनुक्रम ESC ( A[या शायद ESC ) Aऔर ^N] को आउटपुट करता है । इसे सामान्य स्थिति में सेट करने वाले अनुक्रम को प्रिंट करके मैन्युअल रूप से पूर्ववत किया जा सकता है:

printf '\e(B\e)0\x0f'

मैंने कुछ इस तरह से अनुमान लगाया, विशेष को जाने बिना। विवरण के लिए आपका धन्यवाद। आपके आस-पास के लोग कितने महान हैं!
lhermann

1
ओह प्रिय, Ö और place के स्थान पर सीगल्स ... और ओएस एक्स पर टर्मिनल 2016 में भी उस प्रतिस्थापन का समर्थन करता है। अगर मेरे पास केवल देने के लिए एक और upvote था।
ilkkachu

@ilkachach कुछ टर्मिनल जो उन्हें समर्थन करते हैं (मैं पुट्टी को जानता हूं, और मुझे लगता है कि लिनक्स कंसोल भी) यूटीएफ -8 के उपयोग में होने पर उन्हें अस्वीकार कर देते हैं, क्योंकि आईएसओ 2022 कहता है कि राज्य में अन्य अनुक्रमों (को छोड़कर ESC % @) का समर्थन नहीं किया जाएगा। इसका उपयोग UTF-8 का समर्थन करने के लिए किया जाता है। इसलिए वे अंततः दूर हो सकते हैं क्योंकि अधिक अनुप्रयोगों को लाइन ड्राइंग के लिए UTF-8 का उपयोग करने के लिए मजबूर किया जाता है [जो कि इस सुविधा का सबसे व्यापक रूप से उपयोग किया जाने वाला वास्तविक उपयोग है, अन्य वर्ण अधिकतर शामिल किए जाते हैं क्योंकि यह "मुक्त" है जब आपके पास तंत्र लागू होता है। ]।
15:

20
इन पलायन क्रमों को याद रखना आसान है: "A" का अर्थ ब्रिटिश है, "B" का अर्थ "अमेरिकन" है: D
egmont

8
@egmont मैंने इसे खोदा, जैसा कि यह पता चला है, वे क्रमबद्ध रूप से उस क्रम में असाइन किए गए हैं जो वे आईएसओ के साथ पंजीकृत थे। पहले [के साथ पुराने अंतरराष्ट्रीय संदर्भ संस्करण है ¤के लिए $] है @, और उसके बाद ब्रिटिश संस्करण अमेरिकी एक से पहले में प्राप्त करने के लिए हुआ है। उन सभी की सूची के लिए itscj.ipsj.or.jp/itscj_english/index.html
208:54 पर रैंडम 832

30

टर्मिनल बंद करें और एक नया खोलें।


19
आपको नहीं करना चाहिए सवाल वैध है। शायद कोई समझाएगा कि ऐसा क्यों हुआ। यह बैश में एक छेद होना चाहिए। £उसी कुंजी के नीचे बैठता है, जिसके साथ #केवल उसे बुलाया जाता है Alt। किसी तरह Altबैश में रहे। किसी भी तरह, आप उचित स्पष्टीकरण की प्रतीक्षा कर सकते हैं, या यदि आप मेरे उत्तर से संतुष्ट हैं, तो इसे स्वीकार करने के लिए चेक पर क्लिक करें।
टॉमाज़

1
या बश में नहीं, बल्कि टर्मिनल प्रोग्राम में। मैंने GUI के बाहर एक कमांड लाइन पर यही कोशिश की और यह हमेशा के लिए बंद हो गया।
टॉमस

5
@ Xalorous, प्रश्न में कहा गया है कि समस्या तब दिखाई दी जब वह टर्मिनल पर catएड /bin/bashकरता है।
ilkachachu

2
Random832 ने वास्तव में क्या हुआ की एक अच्छी व्याख्या दी
lhermann

16
यह ओवरकिल है - यदि आपके सत्र में कुछ राज्य हैं जो आप रखना चाहते हैं तो क्या होगा? क्या होगा अगर यह एक एक्स टर्मिनल के बजाय एक कंसोल है? resetनौकरी के लिए सही उपकरण है।
पेरीसिनेशन


9

stty saneके रूप में अच्छी तरह से इस समस्या को ठीक करने के लिए लग रहा resetथा।


7

अपने टर्मिनल को बंद करने और फिर से खोलने या रीसेट करने की कोई आवश्यकता नहीं है! हालांकि रीसेट करना काम करेगा यह उचित तरीका नहीं है!

आपको बस अपने टर्मिनल स्क्रॉलबैक बफर को साफ़ / मिटाना होगा । ऐसा करने के लिए, बस नीचे दिए गए आदेश का उपयोग करें:

$ echo -ne '\0033\0143'

1
क्या आपके पास इस चमत्कार के लिए स्पष्टीकरण है?
टॉमाज़

1
@tomas हाँ दोस्त के लिए सुनिश्चित करें। जब -eयह प्रभाव में होता है, तो यह कुछ अनुक्रमों को पहचान सकता है जिन्हें आप चलाकर पढ़ सकते हैं man echo, उनमें से एक है \0NNNजो ऑक्टल मूल्य NNN के साथ बाइट के लिए खड़ा है। वास्तव में, आपको अपने टर्मिनल सत्र को रीसेट करने की आवश्यकता नहीं है, आपको बस अपने स्क्रॉलबैक बफर को साफ करने की आवश्यकता है। और मैंने कहा कि कमांड आवश्यक काम करेगा। उदाहरण के लिए, यदि आप MacOS X का उपयोग कर रहे हैं, तो टर्मिनल का उपयोग करते समय मेनू बार में एक संपादन है, और "क्लियर स्क्रॉलबैक या usingK" के रूप में एक विकल्प है।
फराजएक्स

5
अनुक्रम \033\143ESC c, रीसेट टू इनिशियल स्टेट है : "VT100 को अपने प्रारंभिक राज्य में रीसेट करें, अर्थात, इसके द्वारा संचालित होने के बाद राज्य के पास। यह शक्ति-अप आत्म-परीक्षण और सिग्नल INIT H के निष्पादन का कारण बनता है। संक्षेप में कहा जाए। "
deltab

1
@ डल्टैब मैं ESC के बारे में बताना भूल गया, धन्यवाद एक लाख दोस्त।
FarazX

1
@tomas जब भी आप ऐसी फ़ाइल प्रदर्शित करने का प्रयास करते हैं जिसे प्रदर्शित नहीं किया जाना चाहिए - उदाहरण के लिए द्विआधारी फ़ाइलें - टर्मिनल अजीब और अजीब कार्य करेगा। कई लिनक्स उपयोगकर्ता रीसेट करते हैं, लेकिन यह सबसे अच्छा विकल्प नहीं है क्योंकि टर्मिनल सत्र को रीसेट करने की कोई आवश्यकता नहीं है, और स्क्रॉलबैक बफर को साफ़ करना सभी की आवश्यकता है।
फराजएक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.