कस्टमाइज़िंग बैश शेल: बोल्ड / कलर कमांड


13

ऑनलाइन कई ट्यूटोरियल / पोस्ट हैं (जैसे http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) कैसे सेटिंग में अपने संकेत को अनुकूलित करने के बारे में PS1। क्या मेरे द्वारा टाइप की गई कमांड के रंग / बॉल्डिंग को कस्टमाइज़ करने का कोई तरीका है?

दूसरे शब्दों में, जैसा कि एक उदाहरण कहता है कि मैं एक हरे रंग की संकेत, एक बोल्ड ब्लू कमांड चाहता था, और फिर जो भी रंग डिफ़ॉल्ट होगा उसमें आउटपुट। नीचे दिए गए उदाहरण में, मैं पहले से ही जानता हूं कि " joe>" शो को हरे, नीले, बोल्ड के रूप में कैसे सेट किया जाए PS1। लेकिन क्या ऐसा कोई तरीका है जिससे मैं git statusउदाहरण के लिए शो को बोल्ड बना सकूं?

joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...

यदि आप वास्तव में अच्छा खोल चाहते हैं, तो आपको zsh का उपयोग करना चाहिए, आप जो हासिल करना चाहते हैं, वह बहुत ही सरल होगाpreexec() { printf '\e[0m' }
bollovan

3
@bollovan - 'वास्तव में अच्छा' थोड़ा व्यक्तिपरक है, मुझे लगता है कि यह वास्तव में इसकी ब्लोट और पोसिक्स नॉनप्लेयरेंस के कारण घृणित है। लेकिन, आपकी नाव जो भी तैरती है।
क्रिस डाउन

@ क्रिसडाउन ब्लोट आपकी नाव को तैरता है - यह कभी नहीं सुना, काफी मनोरंजक।
n611x007

जवाबों:


13

PS1 के बाद आपको एक रंग अनुगामी छोड़ना होगा (इसे >अपने उदाहरण के बाद शुरू करें), और फिर DEBUGअपने कमांड चलाने से पहले रंग साफ़ करने के लिए बैश जाल का उपयोग करें (लेकिन आपके द्वारा अपने शेल में एंटर करने के बाद कुछ इस तरह से आज़माएं। :

shopt -s extdebug
trap "tput sgr0" DEBUG

कोड से बचने के लिए किसी अजनबी के लिए: क्या यह कमांड के मूल रंग को संरक्षित करेगा (जैसे ls --color=alwaysकि रंगीन होगा )?
n611x007 13:14

@naxa - हाँ, जैसा कि यह स्पष्ट रूप से रंग कोड निर्धारित करता है (डिफ़ॉल्ट टर्मिनल रंग में रंग के अलावा, जो केवल पहले रंग के बाद प्रभावी होगा)।
क्रिस डाउन

यह ट्रिक टैब पूरा होने में बाधा डालती है (अजीब चीजों को प्रिंट करता है ^[(B^[[m)। यह केवल कुछ प्रणालियों पर होता है, हालांकि: मैंने दो प्रणालियों पर यह परीक्षण किया, दोनों Ubuntu 12.04 LTS पर चल रहे हैं, और उनमें से केवल एक का हस्तक्षेप था।
मुस्तफिल

7

पूर्णता के लिए, यहां एक त्वरित रंग और कमांड लाइन इनपुट रंग को कैसे सेट किया जाए। इन लाइनों को अपने में रखो .bashrc

PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG

DEBUG जाल, जैसा कि क्रिस डाउन द्वारा सुझाया गया है , का उपयोग पाठ विशेषताओं को रीसेट करने के लिए किया जाता है। यह डीबगिंग के लिए है, लेकिन उपयोगकर्ता द्वारा टाइप किए गए कमांड को निष्पादित करने से पहले कोड को निष्पादित करना भी उपयोगी है

शीघ्र सेटिंग में:

  • \[…\] बच दृश्यों के लिए उपयोग किया जाता है ताकि वे किसी भी स्क्रीन रियल एस्टेट का उपयोग न कर सकें (उनके बिना, स्क्रीन को तबाह किया जा सकेगा, जब बैश को प्रॉम्प्ट को फिर से तैयार करना होगा)।
  • \e[…mजहाँ एक संख्या है, या आम तौर पर अर्धविराम द्वारा अलग किए गए संख्याओं का एक क्रम है, एक अनुरक्षण अनुक्रम है जो टर्मिनल पर भेजे गए पाठ के रंग और अन्य विशेषताओं को प्रभावित करता है। उदाहरण के लिए, 1;34बोल्ड ब्लू सेट करता है; 0;32सभी विशेषताओं को रीसेट करता है फिर रंग को हरे रंग में बदलता है। स्वाद के लिए समायोजित करें।
  • \w\$वर्तमान निर्देशिका और $या प्रिंट #। आप निश्चित रूप से इसे अपनी पसंद के अनुसार बदल सकते हैं, और यदि आप चाहें तो बीच में पाठ विशेषता परिवर्तन सम्मिलित कर सकते हैं।
  • अंत में अंतिम विशेषता परिवर्तन होता है, जो पाठ इनपुट का रंग सेट करता है।

FYI करें, बैश रंग कोड / अनुक्रम यहाँ देखे
kaiwan

0

मैं बस BASH कमांड्स के बारे में सीख रहा हूं और मैं अपने वर्जन में कलर कमांड्स के साथ यहां बैठा हूं। मुझे यह समाधान सूझा:

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

PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'

Deconstruct: PS1 =: PS1 कमांड शुरू करता है

'': सिंगल कोट्स में कमांड होती है (इसलिए BASH को नहीं लगता कि यह इसके लिए एक कमांड है)

\: प्रत्येक व्यक्तिगत आदेश इसके साथ शुरू होता है

[]: प्रत्येक आदेश शामिल हैं

\ e (एक ASCII भागने वर्ण भी हो सकता है): एक रंग कमांड शुरू करता है

रंग आदेश उस चीज़ पर लागू होता है जो उस पर लागू होती है।

[\ e [०; ३६ मी]: सियान

\ h: होस्ट नाम

'>': होस्ट नाम के बाद मुद्रित किया गया

[\ e [०; ३१ मी]: लाल

जाहिरा तौर पर, अंत में लाल कमांड इनपुट को लाल बनाता है। बस अपनी पसंद के हिसाब से रंग बदलें और वही आप ढूंढ रहे हैं।

इसके अलावा, इस साइट ने मेरी थोड़ी मदद की:

https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/

मेरा संस्करण: GNU बैश, वी। 4.2.46

ख्याल रखना,

चालक आदमी

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