पॉवर्सशेल प्रॉम्प्ट को कैसे रंगीन करें?


17

मैं हमेशा अपने रंग को अपने लिनक्स में होने का संकेत देता हूं फिर मैं ब्लैक कमांड विंडो में अपना इनपुट पा सकता हूं। लेकिन क्या हम अपने पॉवर्स में वही रंग बना सकते हैं ?


कंसोल फ़ॉन्ट क्या है?
दिमित्री कुद्रियात्सेव

@DmitryKudriavtsev यह देखो , शायद यह अंग्रेजी में सिम गीत है।
योड


@DmitryKudriavtsev हां, माफ करना मैं एक गलती करता हूं।
योड

आपकी गलती नहीं, लिप्यंतरण कठिन है
दिमित्री कुद्रियात्सेव

जवाबों:


32

रंगीन संकेत का स्क्रीनशॉट

PowerShell संकेत देता है

आप जो करना चाहते हैं, उसे शीघ्र अनुकूलित करें ।

PowerShell 3.0 और नए में डिफ़ॉल्ट प्रॉम्प्ट है:

function prompt  
{  
    "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "  
}

रंग भागने के क्रम

अब, विंडोज 10 अपने कोनिस्ट में एएनएसआई से बचने के कोड का समर्थन करता है , और 1703 के बाद से 24-बिट रंग समर्थित है।

ANSI एस्केप कोड्स में से एक का उपयोग करने के लिए, हमें शाब्दिक ESC वर्ण की आवश्यकता होती है । यह ओक्टल 033, या दशमलव 27 है। बैश में, आप उपयोग करेंगे "\033"या "\e"; PowerShell में कोई प्रत्यक्ष समकक्ष अनुक्रम नहीं है, लेकिन आप इसके बजाय एक अभिव्यक्ति एम्बेड कर सकते हैं:"$([char]27)"

PowerShell Core में आप "`e"इसके बजाय एस्केप अनुक्रम का उपयोग कर सकते हैं । एशर द्वारा टिप्पणी के लिए धन्यवाद।


PowerShell में उपयोग करें

इसका मतलब है कि आप उदाहरण के लिए, कोड के साथ सियान के लिए पृष्ठभूमि का रंग सेट करने के लिए निम्न एस्केप अनुक्रम का उपयोग कर सकते हैं 46:

"$([char]27)[46m"

जिसका उपयोग इस तरह किया जा सकता है:

echo "$([char]27)[46mColoured text"

चीजों को अधिक पठनीय बनाने के लिए, आइए एक चर को परिभाषित करें:

$ESC = [char]27

तो हम उपयोग कर सकते हैं:

"$ESC[46m"

जहां $ESCशाब्दिक ESC चरित्र है, [परम सूची की शुरुआत और mअंत को परिभाषित करता है ।

एक कमांड में इसका उपयोग करना:

echo "$ESC[46mColoured text"

और मूल रंग सेटिंग्स को पुनर्स्थापित करने के लिए, हम 0इसके बजाय कोड का उपयोग करते हैं :

echo "$ESC[46mColoured text$ESC[0mUncoloured text"

अधिक उन्नत रंग

यदि आप मूल 16-रंग पैलेट से खुश नहीं हैं, तो आप फॉर्म के साथ पूरे 24-बिट रंगों का उपयोग कर सकते हैं:

"$ESC[48;2;<r>;<g>;<b>m"

कहाँ <r>0-255 से लाल के लिए दशमलव मान है, <g>हरे के लिए और <b>नीले के लिए, जैसे"$ESC[48;2;255;0;123m"

कृपया अधिक जानकारी के लिए दस्तावेज़ देखें।

वास्तव में, यह सभी सीधे बश में है कि आप क्या करना चाहते हैं, इसके अलावा आपको $ESCइसके बजाय उपयोग करने की आवश्यकता है (इसके बाद आपने इसे परिभाषित किया है)\e या \033


एक रंगीन संकेत निर्धारित करना

इन्हें एक साथ रखकर, हम पृष्ठभूमि के रंग को बदलने के लिए ANSI रंग एस्केप कोड को संशोधित प्रांप्ट में उपयोग कर सकते हैं:

function prompt  
{  
    $ESC = [char]27
    "$ESC[46mPS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) $ESC[0m"  
}

हठ

यदि आप चाहते हैं कि यह पूरे सत्र में बनी रहे, तो इसे अपनी प्रोफ़ाइल में जोड़ें (जैसे .bashrc)। आप अपनी प्रोफ़ाइल में पथ देख सकते हैं $profile


हाय ~, यह एक महान उत्तर है..लेकिन इससे भी अधिक, क्या हम पाठ को बोल्ड शैली बना सकते हैं? फिर हम इसे और अधिक आसान पा सकते हैं ..
योद

1
@ योड यह कमोबेश सभी प्रलेखित है , जिसे मैंने उत्तर में जोड़ा है;)
बॉब

1
@ योद आह। यदि आप 37 गैर-चमकीले सफेद की तुलना करते हैं, तो ऐसा लगता है कि PowerShell विंडोज़ पहले से ही डिफ़ॉल्ट रूप से 97 चमकदार सफेद का उपयोग करती है। (btw, वहाँ अगले Win10 संस्करण की साफ स्थापित करने के लिए एक नया रंग पैलेट होने जा रहा है । वर्तमान पैलेट के कुछ स्क्रीनशॉट हैं ; ध्यान दें कि दोनों 1;37mसमान 97mअर्थ "उज्ज्वल सफेद" है)
बॉब

1
@yode मूल रूप से, conhost अभी तक बोल्ड का समर्थन नहीं करता है। उज्ज्वल बोल्ड का एक विकल्प है, और आप पहले से ही डिफ़ॉल्ट रूप से उज्ज्वल रंग का उपयोग कर रहे हैं। यदि आप वास्तव में बोल्ड चाहते हैं, तो आप एक वैकल्पिक टर्मिनल का उपयोग कर सकते हैं, जैसे कि कॉनमू - लेकिन ऐसा लगता है कि एएनएसआई बोल्ड के लिए उनका समर्थन या तो नहीं है। IMO, यह परेशानी के लायक नहीं है।
बॉब

1
मुझे सही तरीके से काम करने के लिए मार्कडाउन नहीं मिल सकता है, लेकिन PowerShell Core में आप backtick + e का उपयोग कर सकते हैं [char]27। मुझे यकीन नहीं है कि यह पहले के संस्करणों में जोड़ा गया था।
अशरबर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.