Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

बैश शेल PS1:एंजेलिना जोली की तरह अपने लिनक्स को शीघ्र बनाने के लिए 10 उदाहरण

बैश शेल PS1:एंजेलिना जोली की तरह अपने लिनक्स को शीघ्र बनाने के लिए 10 उदाहरण<छोटा>फोटो f1r3storm85 के सौजन्य से

पिछले लेख में, हमने Linux पर्यावरण चर PS[1-4] और PROMPT_COMMAND के बारे में चर्चा की थी। यदि प्रभावी ढंग से उपयोग किया जाता है, तो PS1 कमांड प्रॉम्प्ट पर ही बहुमूल्य जानकारी प्रदान कर सकता है।

टॉम्ब रेडर में, एंजेलिना जोली के पास शैली में रहस्य को सुलझाने के लिए सभी गैजेट्स और हथियार हैं। जबकि एंजेलीना जोली के गैजेट और शैली का मिलान करना मुश्किल है, कम से कम आइए इस लेख में दिए गए 10 उदाहरणों का उपयोग करके अच्छे पुराने लिनक्स प्रॉम्प्ट को बहुत कार्यात्मक और स्टाइलिश बनाने का प्रयास करें।

<एच3>1. प्रॉम्प्ट में उपयोगकर्ता नाम, होस्टनाम और वर्तमान कार्यशील निर्देशिका प्रदर्शित करें

इस उदाहरण में PS1 प्रॉम्प्ट में निम्नलिखित तीन जानकारी प्रदर्शित करता है:

  • \u - उपयोगकर्ता नाम
  • \h - होस्टनाम
  • \w - वर्तमान कार्यशील निर्देशिका का पूरा पथ
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>
<एच3>2. प्रॉम्प्ट में वर्तमान समय प्रदर्शित करें

PS1 पर्यावरण चर में, आप $(linux_command) प्रारूप में निर्दिष्ट करके किसी भी Linux कमांड को सीधे निष्पादित कर सकते हैं। निम्नलिखित उदाहरण में, कमांड $(date) को प्रॉम्प्ट के अंदर वर्तमान समय प्रदर्शित करने के लिए निष्पादित किया जाता है।

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

आप वर्तमान समय को hh:mm:ss प्रारूप में प्रदर्शित करने के लिए \t का उपयोग भी कर सकते हैं जैसा कि नीचे दिखाया गया है:

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

आप वर्तमान समय को 12-घंटे पूर्वाह्न/अपराह्न प्रारूप में प्रदर्शित करने के लिए \@ का उपयोग भी कर सकते हैं जैसा कि नीचे दिखाया गया है:

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>
<एच3>3. प्रॉम्प्ट में किसी भी Linux कमांड का आउटपुट प्रदर्शित करें

आप प्रॉम्प्ट में किसी भी Linux कमांड का आउटपुट प्रदर्शित कर सकते हैं। निम्नलिखित उदाहरण | . द्वारा अलग किए गए तीन आइटम प्रदर्शित करता है (पाइप) कमांड प्रॉम्प्ट में:

  • \!: कमांड का इतिहास नंबर
  • \h: होस्टनाम
  • $kernel_version: $kernel_version वेरिएबल
  • . से uname -r कमांड का आउटपुट
  • \$?: अंतिम आदेश की स्थिति
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>
<एच3>4. प्रांप्ट का अग्रभूमि रंग बदलें

उपयोगकर्ता नाम, होस्ट और वर्तमान निर्देशिका जानकारी के साथ नीले रंग में शीघ्र प्रदर्शित करें

<केंद्र>
$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ - रंग संकेत की शुरुआत का संकेत देता है
  • x;ym - रंग कोड इंगित करता है। नीचे उल्लिखित रंग कोड मानों का प्रयोग करें।
  • \e[m - रंग संकेत के अंत को इंगित करता है

रंग कोड तालिका:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

निम्नलिखित पंक्तियों को .bash_profile या .bashrc

. में जोड़कर रंग परिवर्तन को स्थायी बनाएं
STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5. संकेत की पृष्ठभूमि का रंग बदलें

जैसा कि नीचे दिखाया गया है, PS1 प्रॉम्प्ट में \e[{code}m निर्दिष्ट करके पृष्ठभूमि का रंग बदलें।

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

पृष्ठभूमि और अग्रभूमि का संयोजन

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

उपरोक्त पृष्ठभूमि और अग्रभूमि रंग को स्थायी बनाने के लिए निम्नलिखित को .bash_profile या .bashrc में जोड़ें।

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

निम्नलिखित पृष्ठभूमि रंग का उपयोग करके खेलें और जो आपके स्वाद के अनुकूल हो उसे चुनें:

  • \e[40मी
  • \e[41m
  • \e[42m
  • \e[43m
  • \e[44m
  • \e[45m
  • \e[46m
  • \e[47m
<एच3>6. प्रॉम्प्ट में अनेक रंग प्रदर्शित करें

आप एक ही प्रॉम्प्ट में कई रंग भी प्रदर्शित कर सकते हैं। निम्न फ़ंक्शन को .bash_profile

. में जोड़ें
function prompt {
 local BLUE="\[\033[0;34m\]"
 local DARK_BLUE="\[\033[1;34m\]"
 local RED="\[\033[0;31m\]"
 local DARK_RED="\[\033[1;31m\]"
 local NO_COLOR="\[\033[0m\]"
 case $TERM in
 xterm*|rxvt*)
 TITLEBAR='\[\033]0;\u@\h:\w\007\]'
 ;;
 *)
 TITLEBAR=""
 ;;
 esac
 PS1="\u@\h [\t]> "
 PS1="${TITLEBAR}\
 $BLUE\u@\h $RED[\t]>$NO_COLOR "
 PS2='continue-> '
 PS4='$0.$LINENO+ '
}

आप परिवर्तनों को प्रभावी करने के लिए फिर से लॉगिन कर सकते हैं या नीचे दिखाए गए अनुसार .bash_profile को स्रोत कर सकते हैं।

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>
<एच3>7. tput का उपयोग करके शीघ्र रंग बदलें

आप नीचे दिखाए गए अनुसार tput का उपयोग करके PS1 प्रॉम्प्ट का रंग भी बदल सकते हैं:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

टपुट रंग क्षमताएं:

  • tput setab [1-7] - एएनएसआई एस्केप का उपयोग करके पृष्ठभूमि का रंग सेट करें
  • tput setb [1-7] - बैकग्राउंड कलर सेट करें
  • tput setaf [1-7] - एएनएसआई एस्केप का उपयोग करके अग्रभूमि रंग सेट करें
  • tput setf [1-7] - अग्रभूमि रंग सेट करें

टपुट टेक्स्ट मोड क्षमताएं:

  • बोल्ड डालें - बोल्ड मोड सेट करें
  • टपुट डिम - अर्ध-उज्ज्वल मोड चालू करें
  • tput smul - अंडरलाइन मोड शुरू करें
  • tput rmul - अंडरलाइन मोड से बाहर निकलें
  • टपुट रेव - रिवर्स मोड चालू करें
  • tput smso - स्टैंडआउट मोड दर्ज करें (आरएक्सवीटी पर बोल्ड)
  • tput rmso - स्टैंडआउट मोड से बाहर निकलें
  • tput sgr0 - सभी विशेषताओं को बंद करें

tput के लिए रंग कोड:

  • 0 - काला
  • 1 - लाल
  • 2 - हरा
  • 3 - पीला
  • 4 - नीला
  • 5 - मैजेंटा
  • 6 - सियान
  • 7 - सफ़ेद

8. PS1 चर के लिए उपलब्ध कोड का उपयोग करके अपना स्वयं का संकेत बनाएं

निम्नलिखित कोड का उपयोग करें और अपना व्यक्तिगत PS1 Linux प्रॉम्प्ट बनाएं जो कार्यात्मक हो और आपके स्वाद के अनुकूल हो। इस सूची में से कौन सा कोड दैनिक उपयोग के लिए बहुत उपयोगी होगा? अपनी टिप्पणी दें और मुझे बताएं कि आपने अपने Linux प्रॉम्प्ट के लिए किस PS1 कोड का उपयोग किया है।

  • \a एक ASCII घंटी वर्ण (07)
  • \d "सप्ताह के महीने की तारीख" प्रारूप में तारीख (जैसे, "मंगल मई 26")
  • \D{format} - प्रारूप को strftime (3) में पास किया जाता है और परिणाम को शीघ्र स्ट्रिंग में डाला जाता है; एक खाली प्रारूप का परिणाम लोकेल-विशिष्ट समय प्रतिनिधित्व में होता है। ब्रेसिज़ आवश्यक हैं
  • \e एक ASCII एस्केप कैरेक्टर (033)
  • \h पहले भाग तक का होस्टनाम
  • \H होस्टनाम
  • \j वर्तमान में शेल द्वारा प्रबंधित नौकरियों की संख्या
  • \l शेल के टर्मिनल डिवाइस नाम का बेसनाम
  • \n न्यूलाइन
  • \r कैरिज रिटर्न
  • \s शेल का नाम, $0 का बेसनाम (अंतिम स्लैश के बाद का भाग)
  • \t 24 घंटे एचएच में वर्तमान समय:एमएम:एसएस प्रारूप
  • \T वर्तमान समय 12-घंटे HH:MM:SS स्वरूप में
  • \@ वर्तमान समय 12-घंटे पूर्वाह्न/अपराह्न प्रारूप में
  • \A 24 घंटे एचएच में वर्तमान समय:एमएम प्रारूप
  • \u वर्तमान उपयोगकर्ता का उपयोगकर्ता नाम
  • \v बैश का संस्करण (जैसे, 2.00)
  • \V बैश का विमोचन, संस्करण + पैच स्तर (उदा., 2.00.0)
  • \w वर्तमान कार्यशील निर्देशिका, जिसमें $HOME एक टिल्ड के साथ संक्षिप्त है
  • \W वर्तमान कार्यशील निर्देशिका का बेसनाम, $HOME के ​​साथ एक टिल्ड के साथ संक्षिप्त
  • \! इस कमांड का इतिहास नंबर
  • \# इस कमांड का कमांड नंबर
  • \$ यदि प्रभावी यूआईडी 0 है, एक #, अन्यथा एक $
  • \nnn ऑक्टल नंबर एनएनएन के अनुरूप वर्ण
  • \\ एक बैकस्लैश
  • \[ गैर-मुद्रण वर्णों का एक क्रम शुरू करें, जिसका उपयोग टर्मिनल नियंत्रण अनुक्रम को प्रॉम्प्ट में एम्बेड करने के लिए किया जा सकता है
  • \] गैर-मुद्रण वर्ण का एक क्रम समाप्त करें

9. PS1 वैरिएबल के अंदर बैश शेल फ़ंक्शन का उपयोग करें

जैसा कि नीचे दिखाया गया है, आप PS1 में बैश शेल फ़ंक्शन को भी लागू कर सकते हैं।

ramesh@dev-db ~> function httpdcount {
> ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

इस परिवर्तन को स्थायी बनाने के लिए आप निम्न पंक्ति को .bash_profile या .bashrc में जोड़ सकते हैं:

function httpdcount {
 ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '
<एच3>10. PS1 वैरिएबल के अंदर शेल स्क्रिप्ट का उपयोग करें

आप PS1 वेरिएबल के अंदर शेल स्क्रिप्ट को भी इनवाइट कर सकते हैं। नीचे दिए गए उदाहरण में, ~/bin/totalfilesize.sh, जो वर्तमान निर्देशिका के कुल फ़ाइल आकार की गणना करता है, PS1 चर के अंदर लगाया जाता है।

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
 let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
 file size of the current directory in the PS1 prompt]


आपने अपने PS1 में कितना अनुकूलन किया है? क्या आपका PS1 एंजेलीना जोली को हरा सकता है? एक टिप्पणी छोड़ें और अपना PS1 साझा करें शीघ्र मान.

अनुशंसित पठन

बैश कुकबुक, कार्ल एल्बिंग, जेपी वोसेन और कैमरून न्यूहैम द्वारा . बैश एक बहुत शक्तिशाली खोल है। यह पुस्तक आपको बैश शेल में महारत हासिल करने और अत्यधिक उत्पादक बनने में मदद करेगी। चाहे आप एक sysadmin, DBA या एक डेवलपर हों, आपको किसी समय शेल स्क्रिप्ट लिखनी होगी। एक बुद्धिमान sysadmin जानता है कि एक बार जब आप शेल-स्क्रिप्टिंग तकनीकों में महारत हासिल कर लेते हैं, तो आप अपने सर्वर को ऑटो-पायलट मोड पर शेल-स्क्रिप्ट को ग्रंट काम करने की अनुमति देकर रख सकते हैं। Sysadmin के ऑटो-पायलट मोड में जाने के लिए, आपको निश्चित रूप से इस कुकबुक में दिए गए उदाहरणों में महारत हासिल करने की आवश्यकता है। वहाँ शांत कुछ बैश शेल किताबें हैं। लेकिन, बहुत सारे विस्तृत उदाहरण देकर यह पुस्तक उन सभी में सबसे ऊपर है।
 
अतिरिक्त Linux पुस्तक अनुशंसा:आपके मस्तिष्क और पुस्तकालय को समृद्ध करने के लिए 12 अद्भुत और आवश्यक Linux पुस्तकें
 
यदि आपको यह लेख पसंद आया है, तो कृपया इसे del.icio.us पर बुकमार्क करें और इसे ठोकर खिलाएं।


  1. लिनक्स टर्मिनल प्रॉम्प्ट में बैश रंग और सामग्री को कैसे अनुकूलित करें

    आज, अधिकांश (यदि सभी नहीं) आधुनिक लिनक्स वितरण में बैश डिफ़ॉल्ट शेल है। हालाँकि, आपने देखा होगा कि टर्मिनल में टेक्स्ट का रंग और शीघ्र सामग्री एक डिस्ट्रो से दूसरे डिस्ट्रो में भिन्न हो सकती है। सुझाया गया पढ़ें: Linux के लिए 5 सबसे अधिक बार उपयोग किए जाने वाले ओपन सोर्स शेल अगर आप सोच रहे हैं कि इ

  1. विंडोज 10 [ट्यूटोरियल] पर बैश (लिनक्स शेल) को कैसे स्थापित और उपयोग करें

    यहां बताया गया है कि विंडोज़ पर लिनक्स शेल को कैसे सेट अप करें और उसका उपयोग कैसे करें - लिनक्स के लिए विंडोज सबसिस्टम का उपयोग करके (WSL )। यह ट्यूटोरियल 2020 से विंडोज 10 के अप-टू-डेट वर्जन के लिए है। मैं विंडोज 10 के पुराने संस्करणों या विंडोज 8/7/XP/3.1 के अन्य तरीकों पर WSL का उपयोग करने के त

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

    बैश शेल फ़ंक्शन समूह के लिए एकल नाम का उपयोग करके बाद में निष्पादन के लिए कई UNIX / Linux कमांड को समूहबद्ध करने का एक तरीका है। . बैश शेल फ़ंक्शन को नियमित यूनिक्स कमांड की तरह ही निष्पादित किया जा सकता है। शेल फ़ंक्शंस को मौजूदा शेल संदर्भ में उनकी व्याख्या करने के लिए कोई नई प्रक्रिया बनाए बिना न