मैं zsh में अपने संकेत का रंग कैसे बदल सकता हूं (सामान्य पाठ से अलग)?


121

कमांडलाइन पर आउटपुट की शुरुआत और अंत को बेहतर ढंग से पहचानने के लिए, मैं अपने प्रॉम्प्ट का रंग बदलना चाहता हूं, ताकि यह प्रोग्राम आउटपुट से अलग दिखाई दे। जैसा कि मैं zsh का उपयोग करता हूं, क्या कोई मुझे संकेत दे सकता है?

जवाबों:


58

यहां एक संकेत दिया गया है कि कैसे लाल संकेत सेट करें:

PS1=$'\e[0;31m$ \e[0m'

जादू \e[0;31m(लाल अग्रभूमि पर बारी) और \e[0m(चरित्र विशेषताओं को बंद करें) है। इन्हें एस्केप सीक्वेंस कहा जाता है। अलग-अलग एस्केप सीक्वेंस आपको अलग-अलग परिणाम देते हैं, निरपेक्ष कर्सर पोजिशनिंग से, कलर करने के लिए, आपकी विंडो के टाइटल बार को बदलने में सक्षम होने के लिए और इसी तरह।

एस्केप सीक्वेंस पर अधिक जानकारी के लिए, ANSI एस्केप कोड पर विकिपीडिया प्रविष्टि देखें


3
मैं अपने .zshrc में PROMPT = '[%!]' का उपयोग कर रहा हूं। आप इसे कैसे रंग सकते हैं? मैं अपने .zshrc में असफल PROMPT = '\ e [0; 31m [%!] \ E [0m' चलाता हूं।
लेओ लेपोल्ड हर्ट्ज़ '

3
@ erikb85: आप क्यों कहते हैं कि यह गलत है? क्या ऐसा कुछ है जो मैं उत्तर को बेहतर बनाने के लिए कर सकता हूं? मेरे लिए, उपरोक्त कार्य करने से मुझे लाल डॉलर का संकेत मिलता है, इसलिए मुझे समझ नहीं आता कि आप यह क्यों सोचते हैं कि यह गलत है।
ब्रायन ओकले

4
यह काम कर रहा है, लेकिन स्ट्रिंग से पहले $ zshrc को गड़बड़ करना है। टेबुलेशन का उपयोग करने पर पाठ बाईं ओर रखा जाता है। मैं @Joe पर्सन का जवाब पसंद करता हूं
Moebius

1
मैं मानता हूं @Moebius मैं चाहता था कि यह काम करने के लिए एक स्पष्ट और सरल था, लेकिन यह पूरी तरह से सीडी पर टैब को गड़बड़ करता है
मरना

2
मुझे लगा कि zsh को पागल अजीब एएनएसआई से बचने के सामान की ज़रूरत नहीं है ... एक बेहतर जवाब होना चाहिए ...
चार्ली पार्कर

264

इसे इसमें डालें ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% "

समर्थित रंग:
red, blue, green, cyan, yellow, magenta, black, और white(से इस उत्तर ) विभिन्न कंप्यूटर विभिन्न मान्य विकल्प हो सकता है, हालांकि।

चारों ओर रंग कोड (और कोई अन्य गैर-मुद्रण योग्य वर्ण) %{....%}। यह सही ढंग से काम करने के लिए पाठ रैपिंग के लिए है।

इसके अतिरिक्त, यहां बताया गया है कि आप यहां से डायरेक्टरी-ट्रिमिंग के साथ कैसे काम कर सकते हैं

PS1="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%(5~|%-1~/.../%3~|%4~) %{$reset_color%}%% "

3
सहमत, अब तक बेहतर जवाब (सौभाग्य से यह जवाब तीसरा Google परिणाम था;)
new123456

3
मेरे लिए काम नहीं कर रहा। :(zsh: colors: function definition file not found
बाल्की

क्या आप ZSH4 का उपयोग कर रहे हैं? मुझे नहीं लगता कि यह 4.3.11 से कम संस्करणों पर काम करता है। यदि आपके पास नवीनतम संस्करण है, तो शायद यह सही फ़ाइलों का उपयोग नहीं कर रहा है।
को पर्सन

मान्य रंग मान क्या हैं?
चक्र

12
%{...%}अर्थ यह है कि सामग्री, एक शाब्दिक भागने अनुक्रम के रूप में व्याख्या की जाएगी जिससे कर्सर अनुक्रम प्रिंट करते समय नहीं होते चले जाते हैं। यदि आप इसका उपयोग नहीं करते हैं, तो रंग कोड वास्तव में कर्सर को स्थानांतरित कर सकते हैं और अवांछित प्रभाव पैदा कर सकते हैं। यह zshmisc man पेज के Visual Effectsसेक्शन में प्रलेखित है
ब्रूनो पेंटीडो

69

Zsh रंगीन संकेतों के साथ आता है। प्रयत्न

autoload -U promptinit && promptinit

और फिर prompt -lउपलब्ध संकेतों को सूचीबद्ध करता है, -p fire"फायर" प्रॉम्प्ट का पूर्वावलोकन करता है, -s fireइसे सेट करता है।

जब आप ऊपर के ऑटोलैड लाइन के नीचे एक प्रॉम्प्ट ऐड कुछ इस तरह से जोड़ने के लिए तैयार हों:

prompt fade red

क्या सभी विषयों को रंग देने का एक तरीका है? मुझे वाल्टर्स प्रॉम्प्ट पसंद है लेकिन लाल रंग में।
पैट मिरॉन

25

मुझे नहीं लगता कि autoload -U colors && colorsअब इसकी आवश्यकता है और कोई बस कर सकता है:

PS1="%{%F{red}%}%n%{%f%}@%{%F{blue}%}%m %{%F{yellow}%}%~ %{$%f%}%% "

फायरडूड के उत्तर के समान परिणाम प्राप्त करने के लिए । अधिक जानकारी के लिए ZSH प्रलेखन देखें ।


FYI करें। मैंने अभी-अभी उबुनटु ११.०४ में कोशिश की है और रंग मेरे बिना काम नहीं करतेautoload -U colors && colors
dpc.pw

2
अजीब। मेरे लिए OS X और Ubuntu 10.04 पर काम करता है।
एंड्रयू मार्शल

@ और मार्शल हाँ, लेकिन इसके साथ काम करने की संभावना अधिक है autoload
सितंबर को पर्सन

@ fireDude67 कैसे सेट करें autoload on?
बाल्की

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

23

उपलब्ध रंग:

for i in {1..256}; do print -P "%F{$i}Color : $i"; done;

                                      


उपलब्ध चर:

  • %F{118} (1 से 256)
  • $FG[018] (1 से 256)
  • $fg[magenta] (मैजंटा, लाल, सफेद, पीला, काला, नीला, सियान, हरा)

शीघ्र उदाहरण:

PS1='%(?.%F{green}.%F{green})%n@%m:%~%# %f'

कब्जा

PS1='%{$fg[gray]%}[%T][%n@%m%{$reset_color%}:%c%{$reset_color%}%{$fg[gray]%}$(git_prompt_info)]$(prompt_char)%{$reset_color%} ' 

कब्जा


इंस्टॉल:

चर परिभाषा (PS1 / PROMPT) को जोड़ने की आवश्यकता है ~/.zshrc

हम इसे तुरंत परीक्षण करने के लिए पीएस 1 चर को फिर से परिभाषित कर सकते हैं (परिवर्तन सहेजे नहीं जाते हैं)।


15

ऊपर ब्रायन ओकले के जवाब में एक गड़बड़ है क्योंकि यह पहले ही इंगित किया गया है और एंड्रयू मार्शल द्वारा पेश किया गया समाधान हालांकि यह गड़बड़ नहीं करता है, फिर भी यह इस्तेमाल किए गए रंगों पर बहुत अधिक अनुकूलन के लिए स्पष्ट नहीं करता है।

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

विभिन्न रंगों के लिए 3-अंकीय कोड। सबसे पहले, यहां हम विभिन्न रंगों के लिए 3-अंकीय कोड पा सकते हैं: https://unix.stackexchange.com/a/124409/194343 । उदाहरण के लिए, 214 नारंगी रंग का कुछ प्रकार है।

अग्रभूमि और पृष्ठभूमि। अन्य महत्वपूर्ण जानकारी के लिए वह यह है कि एफ oreground और बक कश्मीर जमीन रंग एक परिभाषित कर सकते हैं कि वे क्या चाहते हैं के साथ एफ और कश्मीर क्रमशः। स्रोत दृश्य प्रभावों पर zsh मैनुअल है: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects

इसलिए, उदाहरण के लिए, निम्नलिखित दो आदेश

autoload -U colors && colors
export PS1="%F{214}%K{000}%m%F{015}%K{000}:%F{039}%K{000}%~%F{015}%K{000}\$ "

काले रंग की पृष्ठभूमि के साथ सफेद रंग में एक बृहदान्त्र द्वारा पीछा काले रंग की पृष्ठभूमि के साथ नारंगी में मेजबाननाम प्रस्तुत करें, काले पृष्ठभूमि के साथ चमकदार नीले रंग में वर्तमान काम कर रहे निर्देशिका के बाद, काले रंग की पृष्ठभूमि के साथ सफेद रंग में डॉलर के चिह्न के बाद।

अधिक संबंधित जानकारी नीचे दी गई है।

दाहिने हाथ की ओर शीघ्र सूचना। उदाहरण के लिए, टाइमस्टैम्प जोड़ना। Https://superuser.com/a/1251045/290299 देखें । बेशक, यह रंग-कोडित हो सकता है, उदाहरण के लिए कुछ हल्के नीले / बैंगनी-ईश रंग के साथ, जैसे:

RPROMPT="%F{111}%K{000}[%D{%f/%m/%y}|%@]"

के लिए रंग lsएलएस के लिए मैनुअल पढ़ने के बाद, उदाहरण के लिए lsएक निम्नलिखित दो कमांड का उपयोग करने के लिए रंगों को सक्रिय कर सकता है :

export CLICOLOR=1
export LSCOLORS=gafacadabaegedabagacad

अंत में, एक अंतिम टिप्पणी के रूप में जिसे मैंने परीक्षण नहीं किया है क्योंकि मैं अपने कॉन्फ़िगरेशन से खुश हूं, एक अन्य एवेन्यू किसी के लिए मैकपोर्ट्सcoreutils से पोर्ट स्थापित करने और फिर उपयोग करने के लिए हो सकता है (स्रोत: https://unix.stackexchange.com/a/174596 / 194343 )। (मैं भविष्य में इस अंतिम भाग को संपादित कर सकता हूं क्योंकि उपरोक्त सभी संबंधित टुकड़े हैं जो हर दिन के जीवन को अधिक मज़ेदार बनाते हैं और सामना करने में आसान होते हैं।)gdircolors


1
यह एक बेहद मददगार जवाब है। ये व्यवस्था करने के लिए धन्यवाद।
शुनकदे

@shaunakde आपका स्वागत है! :)
माइटीहाउस

4

मैंने पाया है कि, zsh5 के साथ (डेबियन जेसी पर डिफ़ॉल्ट), वे सभी समाधान काम करते हैं:

  • $'\e[00m
  • $fg[white]
  • $fg{white}

अब, उनके पास एक समस्या है: वे कर्सर को स्थानांतरित करेंगे, जिसके परिणामस्वरूप जब (ऑटो-पूर्ण करने के लिए) टैबिंग के दौरान बदसूरत गिरावट आती है। समाधान बस के साथ बच दृश्यों को घेरने के लिए है %{FOOBAR%}। यह जानने के लिए मुझे कुछ समय लगा। 2 और 3 समाधान के लिए लोडिंग colorsमॉड्यूल अनिवार्य है। 1 समाधान को पठनीय रखने के लिए, आपके द्वारा उपयोग किए जाने वाले रंगों के लिए बस चर को परिभाषित करें।


2

अंतिम कमांड के बाहर निकलने की स्थिति के आधार पर रंग के साथ संकेत पाने के लिए, आप इसका उपयोग कर सकते हैं:

PS1='%(?.%F{green}.%F{red})%n@%m:%~%# %f'

बस इस लाइन को अपने में जोड़ें ~/.zshrc

प्रलेखन संभव प्लेसहोल्डर सूचीबद्ध करता है।


यह यहाँ सबसे अच्छा समाधान है, बहुत बहुत धन्यवाद।
एडी एको

2

मेरे पसंदीदा की कोशिश करो: में डाल दिया

~/.zshrc

यह रेखा:

PROMPT='%F{240}%n%F{red}@%F{green}%m:%F{141}%d$ %F{reset}'

मत भूलना

source ~/.zshrc

परिवर्तनों का परीक्षण करने के लिए

आप निश्चित रूप से रंग / रंग कोड बदल सकते हैं :-)


0

मैन zshall और PROMPT विस्तार के लिए खोज

यहां मौजूदा उत्तरों को पढ़ने के बाद, उनमें से कई परस्पर विरोधी हैं। मैंने zsh 4.2 और 5+ पर चलने वाले सिस्टम पर विभिन्न तरीकों की कोशिश की है और पाया है कि इन उत्तरों के परस्पर विरोधी होने का कारण यह है कि वे यह नहीं कहते हैं कि ZSH के किस संस्करण को वे लक्षित करते हैं। विभिन्न संस्करण इसके लिए अलग-अलग सिंटैक्स का उपयोग करते हैं और उनमें से कुछ को विभिन्न ऑटोलॉड्स की आवश्यकता होती है।

तो, सबसे अच्छा शर्त शायद आदमी zshall है और PROMPT विस्तार के लिए खोज करने के लिए zsh के अपने विशेष स्थापना के लिए सभी नियमों का पता लगाएं। टिप्पणियों में ध्यान दें, "मैं उबंटू 11.04 या 10.4 या ओएसएक्स का उपयोग करता हूं" जैसी चीजें बहुत सार्थक नहीं हैं क्योंकि यह स्पष्ट नहीं है कि ज़ेडएस का कौन सा संस्करण आप उपयोग कर रहे हैं। Ubuntu 11.04 ubuntu 10.04 की तुलना में ZSH का एक नया संस्करण नहीं है। कई कारण हो सकते हैं कि एक पुराने संस्करण को स्थापित किया गया था। उस मामले के लिए ZSH का एक नया संस्करण का अर्थ यह नहीं है कि ZSH का कौन सा संस्करण है, यह जाने बिना कि कौन सा वाक्यविन्यास उपयोग करना है।


0

उपर्युक्त सभी उत्तरों को पूरक करने के लिए एक अन्य सुविधाजनक चाल को रंगीन प्रॉम्प्ट सेटिंग्स को एक zsh फ़ंक्शन में रखना है। वहाँ आप स्थानीय चर को उर्फ ​​लंबे समय तक आदेशों में परिभाषित कर सकते हैं, जैसे rc=$reset_colorया अपने स्वयं के रंग चर को परिभाषित करना। इसे अपनी .zshrcफ़ाइल में रखना न भूलें और आपके द्वारा परिभाषित फ़ंक्शन को कॉल करें:

# Coloured prompt
autoload -U colors && colors
function myprompt {
  local rc=$reset_color
  export PS1="%F{cyan}%n%{$rc%}@%F{green}%m%{$rc%}:%F{magenta}%~%{$rc%}%# "
}
myprompt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.