बोल्ड अक्षरों में टर्मिनल डिस्प्ले यूजर @ मशीन कैसे बनाये?


31

मैंने कुछ स्क्रीन-शॉट्स में देखा है (वेब ​​पर जहां याद नहीं कर सकते हैं) कि टर्मिनल [username@machine /]$बोल्ड अक्षरों में प्रदर्शित कर सकता है । मैं इसे पाने के लिए भी उत्सुक हूं क्योंकि मैं हमेशा अपने आप को लंबे आउटपुट के माध्यम से स्क्रॉल करता हूं ताकि मेरी कमांड के बाद पहली पंक्ति में कठिनाई का पता लगाया जा सके।

मैं उपयोगकर्ता का नाम आदि को बोल्ड या रंगीन कैसे बना सकता हूं?


क्या आप स्पष्ट कर सकते हैं कि क्या आप बैश शेल या किसी अन्य शेल का उपयोग कर रहे हैं?
स्टीफन क्वान

सूक्ति टर्मिनल बैश।
बेंजामिन

जवाबों:


22

आपको PS1अपनी ~/.bashrcफ़ाइल में प्रॉम्प्ट चर को इस तरह सेट करके ऐसा करने में सक्षम होना चाहिए :

PS1='[\u@\h \w]\$ '

इसे रंगीन बनाने के लिए (और संभवतः बोल्ड - यह इस बात पर निर्भर करता है कि आपके टर्मिनल एमुलेटर ने इसे सक्षम किया है) आपको भागने के रंग कोड जोड़ने की आवश्यकता है:

PS1='\[\e[1;91m\][\u@\h \w]\$\[\e[0m\] '

यहां, 1;91mऔर 0mभागों के बीच भाग नहीं होने वाली हर चीज रंग में रंगी जाएगी 1;91(बोल्ड रेड)। इन एस्केप कोड को अलग-अलग रंगों का उपयोग करने के लिए संकेत के विभिन्न भागों के चारों ओर रखें, लेकिन रंगों को रीसेट करना याद रखें 0mया फिर आपके पास रंगीन टर्मिनल आउटपुट भी होंगे। वर्तमान शेल को अद्यतन करने के लिए फ़ाइल को स्रोत के लिए याद रखें:source ~/.bashrc


लाल के लिए 31 का उपयोग क्यों नहीं? 91 एक मानक कोड प्रतीत नहीं होता है।
jw013

1
@ jw013 रेंज 90-97 30-37 रेंज के बराबर हैं, तो बोल्ड यानी के रूप में इस्तेमाल 1;31और 1;91। सामान्य फ़ॉन्ट भार का उपयोग करते हुए, 90-97 रेंज अन्य की तुलना में अधिक चमकीले रंग देता है।

45

यह पता लगाएं कि आपका PS1सेट कहाँ पर है और शुरुआत में और अंत में .bashrcडालें । '\[\e[1m\]'\[\e[0m\]

  • \[और \]आवश्यक हैं ताकि शेल को पता चल जाए कि अंदर की गंदगी स्क्रीन पर 0 जगह लेती है, जो लाइन-एडिटिंग करते समय कुछ खराब व्यवहार को रोकती है। आपको इसके बारे में बहुत अधिक चिंता करने की आवश्यकता नहीं है।
  • \e[सीएसआई (नियंत्रण अनुक्रम परिचयकर्ता) के रूप में जाना जाता है। आप इसका उपयोग संदर्भित विकिपीडिया पृष्ठ पर सूचीबद्ध अधिकांश कोड में देखेंगे। \e पलायन चरित्र का मतलब है।
  • यदि आप विकिपीडिया पृष्ठ पर SGR तालिका में देखते हैं, तो आप देखेंगे कि 1 उज्ज्वल / बोल्ड पाठ के लिए संख्या है, और 0 रीसेट के लिए है। इस प्रकार CSI 1mबोल्ड चालू हो जाता है और CSI 0mफ़ॉन्ट को रीसेट करता है ताकि आपके टेक्स्ट का बाकी हिस्सा सामान्य हो।

विकिपीडिया में ANSI एस्केप कोड की एक पूरी सूची है जिसका उपयोग आप कर सकते हैं यदि आपका टर्मिनल एमुलेटर इसका समर्थन करता है।

संपादित करें

पोर्टेबिलिटी और पठनीयता के लिए, आपको tputहार्ड-कोडिंग एस्केप कोड के बजाय उपयोग करना चाहिए । केवल नकारात्मक पक्ष यह है tputकि एएनएसआई कोड का समर्थन करने वाले टर्मिनलों के साथ काम नहीं करेगा, लेकिन टूटे हुए या लापता टर्मिनल डेटाबेसों का समर्थन करते हैं, लेकिन उस स्थिति में टूटी हुई अवधि बहुत बड़ी समस्या है क्योंकि आपके कई कंसोल ऐप जो टर्मिनल पर भरोसा करते हैं, ठीक से काम नहीं कर सकते हैं।

यहाँ एक उदाहरण है कि मैं अपने में क्या करता हूँ .bashrc:

# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "

यहाँ मेरा एक सामान्य संस्करण क्या दिखेगा। 0पिछले आदेश के निकास स्थिति है।

PS1 स्क्रीनशॉट


अच्छा और व्याख्यात्मक उत्तर, +1। फिर भी मुझे हेस का जवाब इस बिंदु पर अधिक मिला , इसलिए मैंने इसके बजाय इसे चुना।
बेंजामिन

जब मैंने यह कोशिश की, तो मैं एक समस्या में भाग गया जैसे टर्मिनल प्रॉम्प्ट सही ढंग से नहीं लपेट रहा । क्या आप? क्या आपने एस्केप सीक्वेंस अपडेट किए हैं?
स्टीफन लासिवस्की

6

यह डिफ़ॉल्ट प्रॉम्प्ट है जो आपको साइबरविन बैश शेल में मिलता है:

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '

यहाँ छवि विवरण दर्ज करें

\[\e]0;\w\a\] = Set the Window title to your current working directory
\n            = new line
\[\e[32m\]    = Set text color to green
\u@\h         = display username@hostname
\[\e[33m\]    = Set text color to yellow
\w            = display working directory
\[\e[0m\]     = Reset text color to default
\n            = new line
\$            = display $ prompt

संदर्भ:


अच्छा, मैंने [उपयोगकर्ता @ होस्ट] से पहले एक नई पंक्ति जोड़ी, जो प्रत्येक कमांड को अभी और अधिक पठनीय बनाता है (इसे टर्मिनल इमो पर डिफ़ॉल्ट रूप से सेट किया जाना चाहिए)।
बेंजामिन

2

मैं इस शेल फ़ंक्शन का उपयोग टर्मिनल में पाठ विशेषताओं को प्राप्त करने के लिए करता हूं:

color () {
  if [ -z "$1" -a -z "$2" -a -z "$3" ]; then
    echo "\033[0m"
    return
  fi
  case $1 in
    black)   color_fg=30;;
    red)     color_fg=31;;
    green)   color_fg=32;;
    yellow)  color_fg=33;;
    blue)    color_fg=34;;
    magenta|purple) color_fg=35;;
    cyan)    color_fg=36;;
    white)   color_fg=37;;
    -)       color_fg='';;
    *)       color_fg=39;;
  esac
  case $2 in
    bold)      color_bd=1;;
    italics)   color_bd=3;;
    underline) color_bd=4;;
    inverse)   color_bd=7;;
    strike)    color_bd=9;;
    nobold)      color_bd=22;;
    noitalics)   color_bd=23;;
    nounderline) color_bd=24;;
    noinverse)   color_bd=27;;
    nostrike)    color_bd=29;;
    -)         color_bd='';;
    *)         color_bd=0
  esac
  case $3 in
    black)   color_bg=40;;
    red)     color_bg=41;;
    green)   color_bg=42;;
    yellow)  color_bg=43;;
    blue)    color_bg=44;;
    magenta|purple) color_bg=45;;
    cyan)    color_bg=46;;
    white)   color_bg=47;;
    -)       color_bg='';;
    *)       color_bg=49;;
  esac
  s='\033['
  if [ -n "$color_bd" ]; then
    s="${s}${color_bd}"
    if [ -n "$color_fg" -o -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_fg" ]; then
    s="${s}${color_fg}"
    if [ -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_bg" ]; then
    s="${s}${color_bg}"
  fi
  s="${s}m"
  echo "$s"
  unset s color_bd color_bg color_fg
}

फिर इसका उपयोग करने के लिए:

color_reset=`color`
color_grbd=`color green bold`
color_bubd=`color blue bold`
PS1="\[${color_grbd}\][\u@\h]\[${color_reset}\]:\[$color_budb}\]\w\[${color_reset}\]> "

इससे मुझे पता [username@hostname]:cwd>चलता है username@hostnameकि बोल्ड ग्रीन कहां है और cwdबोल्ड ब्लू है।


इसके लिए धन्यवाद। मुझे लगता है कि मुझे भी उपरोक्त सभी को कॉपी करना था ~/.bashrc?
बेंजामिन

हां, मैं ~/.bashrcइसे अपनी फ़ाइल में सेट करता हूं और इसका उपयोग अपना प्रॉम्प्ट सेट करने के लिए करता हूं। मैं यहां तक ​​कि जिस सिस्टम पर हूं, उसके आधार पर रंग बदलता हूं।
अरेज

1

इसे डिफ़ॉल्ट उबंटू प्रॉम्प्ट की तरह बनाने के लिए जोड़ें

export PS1='\[\e[1;32m\]\u@\h\e[0;39m\]:\e[1;34m\]\w\e[0;39m\]$\[\e[0m\] '

अपने में ~/.bashrc

यह प्रसिद्ध हरे user@host(बोल्ड) का उत्पादन करेगा , इसके बाद एक गैर-बोल्ड श्वेत बृहदान्त्र, उसके बाद बोल्ड ब्लू में आपकी वर्किंग डायरेक्टरी, उसके बाद एक $संकेत, एक स्थान और गैर-बोल्ड श्वेत अक्षरों में आपकी आज्ञा होगी:

उबंटू बैश प्रॉम्प्ट

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