zsh
इसे इस्तेमाल करे:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|grep --color=always /)%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
यहाँ शीघ्र का टूटना है:
- PROMPT_SUBST प्रॉम्प्ट (और पैरामीटर विस्तार और अंकगणितीय विस्तार) में कमांड प्रतिस्थापन पर जाता है
%{...%}
- एक भागने का क्रम
$(pwd|grep --color=always /)
- वर्तमान निर्देशिका को प्रिंट करें और उजागर करें /
- रंग $ GREP_COLORS पर्यावरण चर (या इसके डिफ़ॉल्ट मान) पर निर्भर करेगा - बोल्ड लाल डिफ़ॉल्ट है
%${#PWD}G
- वर्तमान निर्देशिका के नाम के अक्षरों में लंबाई का उपयोग एक गड़बड़ मान के रूप में करें। यह शेल %{
को स्ट्रिंग की वास्तविक लंबाई के बजाय पूर्ववर्ती वर्ण अनुक्रम (" " "के बाद ) की लंबाई पर विचार करता है जिसमें एएनएसआई एस्केप सीक्वेंस शामिल हैं। यह शेल को प्रांप्ट के अंत के सापेक्ष कर्सर की स्थिति के बारे में भ्रमित होने से बचाता है।
- - - - - - - यह उस भाग का अंत है जो आपके प्रश्न का उत्तर देता है - - - - - - -
%(!.%F{red}.%F{cyan})
- अगर यह एक विशेषाधिकार प्राप्त खोल (रूट) है तो अग्रभूमि का रंग लाल हो सकता है, अन्यथा सियान
%n
- उपयोगकर्ता नाम का उत्पादन
%f
- अग्रभूमि रंग को डिफ़ॉल्ट पर रीसेट करें
@
- संकेत पर एक शाब्दिक
%F{yellow}
- अग्रभूमि का रंग पीला करें
%m
- मेजबाननाम आउटपुट
%f
- अग्रभूमि रंग को डिफ़ॉल्ट पर रीसेट करें
%(!.%F{red}.)
- अगर यह एक विशेषाधिकार प्राप्त शेल (रूट) है तो अग्रभूमि का रंग लाल करने के लिए सेट करें
%#
- #
एक विशेषाधिकार प्राप्त खोल के लिए या %
एक अप्रकाशित के लिए आउटपुट
%f
- अग्रभूमि रंग को डिफ़ॉल्ट पर रीसेट करें
मैंने जोर देने के लिए इस प्रॉम्प्ट में सबसे पहले रास्ता रखा, क्योंकि प्रश्न मार्ग की चिंता करता है।
यहाँ zsh के लिए एक संस्करण है जो स्लैश रंग को बदलता है, जो इस बात पर निर्भर करता है कि क्या आप $GREP_COLORS
वेरिएबल में हेरफेर करके रूट (विशेषाधिकार प्राप्त) हैं :
setopt PROMPT_SUBST
PROMPT='%{$(pwd|([[ $EUID == 0 ]] && GREP_COLORS="mt=01;31" grep --color=always /|| GREP_COLORS="mt=01;34" grep --color=always /))%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
दे घुमा के
आप बैश में इसी तरह का संकेत दे सकते हैं। इस उदाहरण में, मैंने उपयोगकर्ता और होस्टनाम को पहले रखा है और स्लैश का रंग भी बदल जाता है जब UID 0. होता है। चेतावनी: यह बैश के $PS1
शीघ्र चर को अधिलेखित करता है। जब तक आप कुछ विशेष नहीं कर रहे हैं तब तक यह समस्या नहीं होनी चाहिए या जब आप उस चर को सीधे सेट करते हैं तो व्यवहार में बदलाव की उम्मीद है और यह प्रभाव में है। इसके अलावा, यह " usercolor
" नामक एक चर का उपयोग करता है, जो किसी और चीज से टकरा सकता है, हालांकि इस पूरी चीज को एक फ़ंक्शन में रखा जा सकता है और चर को स्थानीय घोषित किया जा सकता है।
PROMPT_COMMAND='usercolor="\[\033[0;36m\]";[[ $EUID == 0 ]] && usercolor="\[\033[1;31m\]";PS1="$(pwd)";PS1="$usercolor\u\[\033[0m\]@\[\033[0;33m\]\h\[\033[0m\]:${PS1//\//$usercolor/\[\033[0m\]}$usercolor\\$\[\033[0m\] "'
मैंने इस तथ्य का फायदा उठाया कि बैश में सशर्त रूप से स्लैश (grep का उपयोग करने के बजाय) को रंगीन करने के लिए पैरामीटर विस्तार प्रतिस्थापन का उपयोग करने के लिए zsh की "गड़बड़" सुविधा नहीं है।