उपयोगकर्ता या रूट के आधार पर तुरंत रंग बदलें


13

zsh में आप %#अपने PS1(या जो भी PROMPTचर) मूल रूप से प्रदर्शित कर सकते हैं, जिसका अर्थ है कि %अगर उपयोगकर्ता या #रूट प्रदर्शित करता है। मैं सोच रहा था कि क्या इसे प्रभावित करने का कोई तरीका है ताकि यह रंग बदल जाए %या #इस पर निर्भर करता है कि यह उपयोगकर्ता है या रूट (रूट के लिए लाल, उपयोगकर्ता के लिए एक नीला) स्पष्ट तरीका सिर्फ PS1मेरी जड़ को बदलना है, ~/.zshrcलेकिन विचार करना यह पहले से ही एक विशेष प्रतीक है जो मैं सोच रहा हूं कि शायद ऐसा कोई तरीका नहीं है जो मैं PS1दोनों के लिए समान उपयोग कर सकता हूं ... कुछ ऐसा करने के लिए विशिष्ट है %#जो zsh के लिए है (मुझे यकीन है कि अन्य हैक हैं जो मैं भी पसंद कर सकता हूं (यदि तब कथन)

जवाबों:


8

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

यही कारण है कि चाहिए होस्ट नाम बदलने के लिए काम करते हैं (%m ) एक अलग रंग (लाल) यदि आप जड़ हैं। मेरे पास इसे जांचने के लिए एक zsh शेल नहीं है लेकिन यह सही दिखता है।

यहाँ पर क्यों:

%(x.true.false):: टर्नरी के पहले कार्यकाल के मूल्यांकन के आधार पर, सही कथन निष्पादित करें। '!' सच है अगर खोल विशेषाधिकार प्राप्त है। वास्तव में के %#लिए एक शॉर्टकट है%(!.#.%)

%{\e[1;31m%} %m %{\e[0m%}:: %{\e[X;Ym%}रंग कोड के रूप में एक्स के साथ स्वरूपण (बोल्ड, रेखांकित, आदि) और वाई के रूप में रंग भागने का क्रम है। ध्यान दें कि आपको उस शब्द के चारों ओर अनुक्रम खोलने और बंद करने की आवश्यकता है जिसे आप रंग बदलना चाहते हैं अन्यथा उस बिंदु के बाद सब कुछ जो भी रंग होगा। मैंने %mस्पष्टता के लिए शीघ्र पद के आसपास रिक्त स्थान जोड़ा है ।

http://www.nparikh.org/unix/prompt.php में कलर टेबल के आसपास अधिक विकल्प और विवरण और zsh के लिए अन्य उपलब्ध विकल्प हैं।


6
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#परीक्षण करता है कि क्या शेल जड़ के रूप में चल रहा है। यह बदलने के लिए %(!कि क्या शेल उच्चीकृत विशेषाधिकारों के साथ चल रहा है (जो चीजों को कवर करता है newgrp, लेकिन रूट के रूप में लॉगिंग नहीं है)।

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