बैश के PS1 में उपयोगकर्ता नाम के एक विशिष्ट अक्षर का रंग बदलें


9

मैं अपने उपयोगकर्ता नाम में एक विशिष्ट अक्षर का रंग बदलना चाहता हूं, जो PS1 द्वारा बैश में प्रदर्शित किया जा रहा है।

उदा: यदि मेरी \uहै rahul, तो मैं चाहूंगा कि पत्र hनीले रंग में हो और सफेद हो।

मैं जानता हूँ कि है कि \uउपयोगकर्ता नाम और एक पूरी 'इकाई' की तरह टैग जोड़ने द्वारा किया जाता है करने के लिए एक रंग जोड़ने के लिए संदर्भित करता है: [\033[38;5;15m\]

यदि यह संभव है, तो क्या मैं यह जान सकता हूं कि कैसे करना है।

जवाबों:


13

यदि आप \uभागने का उपयोग नहीं करते हैं, तो आप इसे इस तरह से कर सकते हैं:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

यह केवल उपयोगकर्ता नाम और एक स्थान के लिए संकेत सेट करेगा। उपयोगकर्ता नाम का पहला वर्ण लाल होगा। यह $USERएक विशिष्ट श्रेणी के साथ दो बार चर का विस्तार करके काम करता है । पहली बार सीमा 0 से 1 तक है। दूसरी बार यह 1 (दूसरा चरित्र) से अंत तक है।

आपके द्वारा अनुरोध किया गया प्रांप्ट प्राप्त करने के लिए इसका उपयोग करें:

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "

1
आप ऑफसेट के साथ पूरे स्ट्रिंग शुरुआत को प्रिंट करने के लिए सिर्फ लंबाई को छोड़ सकते हैं : पहले चरित्र को छोड़कर पूरे उपयोगकर्ता नाम के लिए। अच्छा समाधान! क्या आप यह भी दिखा सकते हैं कि तीसरे चरित्र का रंग कैसे बदलना है, जैसा कि ओपी ने अनुरोध किया है? ${USER:1}
मिठाई

1
इस तरह की चीजों का परीक्षण कर सकते हैं echo -e, जैसेecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
मिठाई

2
क्या इसके लिए विभिन्न विभिन्न उपयोगकर्ता नामों के साथ काम करना होगा (उदाहरण के लिए सभी के लिए 3 अक्षर को उजागर करें)? यदि यह सिर्फ आपके लिए है, तो एक सरल तरीका यह है कि आप अपने उपयोगकर्ता नाम के अक्षरों को हार्डकोड करें, जैसे कि raइसके बजाय ${USER:0:2}, आदि
उदाहरण के लिए

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

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