2009-04-01 9 views
10

मैं स्वीकार करते हैं कि मैं कुछ हद तक एक घना बैश संकेत का उपयोग: हाल ही मेंयह बैश प्रॉम्प्ट अजीब/गायब होने का अभिनय क्यों कर रहा है, और मैं इसे कैसे ठीक करूं (ओएस एक्स)?

--(username)-(Wed April 01|12:00:00)--(~ $

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

#.profile 
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '

अग्रिम धन्यवाद!

उत्तर

34

ऐसा लगता है कि this आपकी समस्या का समाधान करना चाहिए।

यह मेरे लिए काम करने के लिए * लगता है: मेरे लिए वास्तव में काम करता है export PS1='\[email protected]\h:\w\$ '

export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ ' 

अच्छी तरह से *,

जुड़ा हुआ पद के शब्दों में, इस सवाल का जवाब आसपास \ [और \] जोड़ने में निहित है आपके PS1 घोषणा में आपके सभी रंग अनुक्रम:

मेरे पास निम्न मान होने से पहले PS1:

'\ ई [0; 34m \ h: \ w [] \ $ \ ई [0m!'

जो मुझे निम्न प्रपत्र

होस्ट नाम का एक अच्छा नीले शीघ्र दिया: काम कर रहे -डायरेक्टरी [कमांड-संख्या] $

हालांकि, मेरे पास वही लाइन-रैपिंग समस्या थी जो आपने किया था। फिक्स एएनएसआई से बचने के लिए \ [और \] डालने के लिए था ताकि खोल जानता है कि उन्हें लाइन रैपिंग गणना में शामिल न करना है।

+2

चास, बस उस प्रॉम्प्ट को देखकर मेरी आंखें लाल हो जाती हैं। आपकी मदद के लिए धन्यवाद, महोदय! आपका एकमात्र समाधान था जो पूरी तरह से काम करना प्रतीत होता था। –

+0

मेरे प्रॉम्प्ट का रंग बदलने के बाद (लिनक्स में, ओएसएक्स नहीं), मुझे अपने इतिहास में पीछे की ओर खोज करने में परेशानी हो रही थी। यह मेरी समस्या हल हो गई। धन्यवाद! – Mark

6

http://mywiki.wooledge.org/BashFAQ/053: '! \ W [] \ $ \ [\ ई [मीटर \] 34m \] \ h \ [\ ई [0'

: यह PS1 के लिए निम्नलिखित मूल्य में जो परिणाम - मेरे पास रंगों के साथ एक फैंसी प्रॉम्प्ट है, और अब बैश यह नहीं जानता कि मेरा टर्मिनल कितना चौड़ा है। पंक्तियों को गलत तरीके से लपेटें।

वैसे; आपके सन्दर्भ के लिए; यहाँ मेरी PS1 जो इस तरह दिखता है: alt text http://lhunath.lyndir.com/stuff/PS1.png

\[$reset$bold$green\]\[email protected]\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\] 

सूचना कैसे मैं $parameters में सभी रंग कोड डाल यह neater बनाने के लिए, लेकिन अधिक महत्वपूर्ण है, क्योंकि आप उन्हें उत्पन्न करने के लिए tput का उपयोग करना चाहिए। देखें:

http://mywiki.wooledge.org/BashFAQ/037 - मैं विभिन्न रंगों में टेक्स्ट कैसे प्रिंट कर सकता हूं?

मैं अपने रंग पैरामीटर को एक उपयोगिता स्क्रिप्ट में घोषित करता हूं जो my ~/.bashrc (और मुझे लिखने वाली कोई भी स्क्रिप्ट) द्वारा सोर्स किया जाता है जिसे bashlib कहा जाता है।

अंतिम नोट पर; ~/.bashrc में अपनी PS1 परिभाषा डालें और export पर न करें। बिल्कुल कोई कारण नहीं है कि आपको अपने PS1 को अपने खोल से उत्पन्न होने वाली किसी भी और सभी प्रक्रियाओं के पर्यावरण की परिभाषा क्यों जोड़नी चाहिए।

1

तुम बस (पहले '\ ई' और पिछले 'm' के बाद) अपने पलायन के आसपास आरंभ और समाप्ति कोष्ठक गुम हो रहे हैं:

PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ ' 

के रूप में उल्लेख किया है, PS1 वर नहीं है निर्यात करने की आवश्यकता है: केवल आपके खोल को देखने की जरूरत है।

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