2011-09-25 11 views
6

पर जाता है मुझे अपने टर्मिनल के संकेत को रंगते समय एक परेशान करने वाली बग मिली।टर्मिनल में रंगों को सेट करना अजीब चरित्र रेखा सीमा

enter image description here

दूसरे शब्दों में, जब मेरे लाइन: यदि मैं जब मैं इनपुट लाइन में कुछ आकार को तोड़ने के लिए

export PS1='\e[1;34m[\e[0;31m\D{%Hh%M} \e[0;32m\u\e[[email protected]\e[0;35m\h\e[0m:\e[0;36m\w\e[1;34m]\e[0m $ ' 

तो यह शुरू होता है के रूप में एक रंगीन एक करने के लिए अपने शीघ्र, इस तरह के सेट कुछ सीमा तक पहुंचता है, यह खुद से शुरू होता है! एक बार जब मैं एक ही पंक्ति को फिर से भरूं, तो यह अगली पंक्ति पर जाकर अच्छी तरह से काम करता है।

क्या किसी ने भी इस समस्या को देखा है? क्या आपके पास एक समाधान है? ITerm में समस्या भी होती है।

+1

आपका वाक्यविन्यास अत्याचारी है। कर्सर नज़र में, आपके पास इसे बंद करने के लिए हार्ड ब्रैकेट नहीं है ($ से पहले)। अन्य समस्याएं हैं। मैं शुरू करने का सुझाव देते हैं। यहां रंगीकरण के लिए एक गाइड है: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/ –

+1

साइड नोट: प्रॉम्प्ट को कस्टमाइज़ करते समय, एक शाब्दिक डॉलर चिह्न के बजाय '\ $' का उपयोग करें। बैश उचित संकेत चरित्र (सामान्य उपयोगकर्ताओं के लिए '$', रूट के लिए '#' प्रदर्शित करेगा)। –

+0

एक और स्टाइल टिप: हार्ड-कोड से बचने के अनुक्रमों को न करें (मुझे लगता है कि ज्यादातर लोग करते हैं, लेकिन उन्हें नहीं करना चाहिए)। इसके बजाय, मौजूदा टर्मिनल के लिए उपयुक्त कोड उत्सर्जित करने के लिए 'tput' का उपयोग करें, ताकि यह विभिन्न टर्मिनलों के साथ उचित रूप से काम करे। विशेष रूप से, टर्मिनल को भ्रमित करने वाले पात्रों को उत्सर्जित करने के बजाय टर्मिनल आपके प्रॉम्प्ट में रंग/शैलियों का समर्थन नहीं करता है, तो यह कुछ भी आउटपुट नहीं करेगा। उदाहरण के लिए, 'PS1 = "\ [$ (tput setaf 1) \] \ h: \ W \ [$ (tput sgr0) \] \ u \ $" 'लाल रंग में होस्टनाम और कार्यशील निर्देशिका प्रदर्शित करेगा। –

उत्तर

5

यह स्टैक ओवरव्लो से Mac Terminal.app annoying bug - How to fix it? का डुप्लिकेट है। समस्या यह है कि आपको स्क्वायर ब्रैकेट \[ … \] में टर्मिनल नियंत्रण वर्णों को घेरे रखना चाहिए ताकि कमांड प्रॉम्प्ट की लंबाई की गणना करते समय बैश खोल उन्हें गिनती न करे।

चूंकि यह एक सामान्य खोल/टर्मिनल प्रश्न है और मैक ओएस एक्स या टर्मिनल के लिए विशिष्ट नहीं है, तो इसे शायद स्टैक ओवरफ्लो में माइग्रेट किया जाना चाहिए और दूसरे प्रश्न का डुप्लिकेट बनाया जाना चाहिए। (हालांकि, मुझे या तो करने का विशेषाधिकार नहीं है।)

+3

अच्छा जवाब है, लेकिन मुझे लगता है कि इसे अलग पूछने पर छोड़ना स्वीकार्य है क्योंकि इस मुद्दे के साथ ऐप्पल उपयोगकर्ताओं को उत्तर के लिए स्टैक ओवरफ्लो पर जाने की संभावना कम है – conorgriffin

संबंधित मुद्दे