लिनक्स: कलर बैश प्रॉम्प्ट से गाड़ी की वापसी होगी


24

जब मैं bashइस तरह संकेत को रंगीन करने की कोशिश करता हूं :

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

यह कैरिज रिटर्न को तोड़ता है (एक नई लाइन पर जाने के बजाय जब लाइन भर जाती है, यह एक ही लाइन में शुरू होता है और इनपुट टेक्स्ट मिटा देता है)।

अगर मैं रंग अनुक्रम हटाता हूं तो यह ठीक काम करता है।
मैं उबंटू 11.10 और टर्मिनल का उपयोग करता हूं (गुके में एक ही बग भी है)।


अजीब। यह RedHat 5 और Mac OS X
Matteo

जवाबों:


43

आप के बीच सभी भागने दृश्यों लपेट चाहिए \[और \]'ReadLine' के लिए आदेश सही ढंग से की शीघ्र दिखाई अवधि की गणना करने में। उनके बिना, 'रीडलाइन' को लगता है कि प्रॉम्प्ट इससे अधिक लंबा है, और यह नहीं जानता कि पाठ कब मार्जिन तक पहुंचता है।

PS1 = " \ [ \ e [; 31m \] [\ u @ \ h \ W] \ $ \ [ \ e [m \] "

4
अनेक अनेक धन्यवाद!! मैं आधिकारिक दस्तावेज़ में इस पर कुछ दस्तावेज खोजने की कोशिश कर रहा था, लेकिन 'स्टॉक' कलर प्रॉम्प्ट इस 'ट्रिक' को नियोजित नहीं करता था और मुझे पहले यह पता लगाने में कठिन समय था कि यह वास्तव में क्या था, इसलिए इसे क्लीयर करने के लिए धन्यवाद अप --- btw मैं वास्तव में लाइन 684 के आसपास 'मैन रीडलाइन 3' में प्रलेखन स्रोत पाया और यह कहता है कि यह वास्तव में उन लोगों के लिए 'स्किप-सीसीआई-अनुक्रम' कहा जाता है जो यह जानना चाहते हैं कि इस पर प्रलेखन कहाँ है। मुझे नहीं लगता कि मुझे यह पता चले बिना कि आपने मुझे (3) रीडलाइन की ओर इशारा किया होगा, हालांकि मैं इसके बारे में पहले से जानता था कि यह कनेक्शन बनाने में विफल रहा।
ऑसिरिसगोथरा

"रैप" का क्या अर्थ है? आप पूरी बात लपेट मतलब है में एक \[, \]? मुझे ऐसा लगता है, लेकिन यह मेरे लिए काम नहीं कर रहा है।
मैक्स हॉवेल

2
@osirisgothra: प्रलेखन वास्तव में एक अलग चीज के बारे में बात कर रहा है - विशेष कुंजी द्वारा उत्पन्न इनपुट अनुक्रमों skip-csi-sequenceको दबाने के लिए है।
ग्रैविटी

1
@MaxHowell आपको प्रत्येक \e[xxmअनुक्रम को लपेटना है, न कि पूरी स्ट्रिंग।
एनरिको

धन्यवाद। मेरे मामले में मैं बस के \e[39mसाथ बदल दिया \[\e[;39m\]और यह ठीक काम करता है
हेरगोट

1

[और] टिप ने OS X 10.8.2 पर भी काम किया।

मैं उपयोग करता हूं:

PS1 = "[\ e [0; 37m \ W \ $ (git Branch 2> / dev / n | grep -e '*' | sed 's / ^ .. (। *।) / {\ _ 1} /') \ $ \ e [एम] "

जो मुझे उपयोग में मेरी वर्तमान गिट शाखा दिखाता है।


क्या आप "__git_ps1" के बारे में जानते हैं?
रफक

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