Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Linux Bash प्रॉम्प्ट को बेहतर बनाने के लिए 10 व्यावसायिक PS1 अनुकूलन

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

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

1. प्रॉम्प्ट में उपयोगकर्ता नाम, होस्टनाम और वर्तमान कार्य निर्देशिका प्रदर्शित करें

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

  • \u - उपयोगकर्ता नाम
  • \h - होस्टनाम
  • \w - वर्तमान कार्य निर्देशिका का पूर्ण पथ
-bash-3.2$ export PS1="\u@\h \w> " ramesh@dev-db ~> cd /etc/mail ramesh@dev-db /etc/mail>

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-घंटे am/pm प्रारूप में वर्तमान समय प्रदर्शित करने के लिए \@ का भी उपयोग कर सकते हैं जैसा कि नीचे दिखाया गया है:

ramesh@dev-db ~> export PS1="[\@] \u@\h> " [04:12 PM] ramesh@dev-db>

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>

4. प्रॉम्प्ट का फोरग्राउंड रंग बदलें

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

$ export PS1="\e[0;34m\u@\h \w> \e[m" [नोट: यह हल्के नीले प्रॉम्प्ट के लिए है] $ export PS1="\e[1;34m\u@\h \w> \e[m" [नोट: यह गहरे नीले प्रॉम्प्ट के लिए है]
  • \e[ - रंग प्रॉम्प्ट की शुरुआत इंगित करता है
  • x;ym - रंग कोड इंगित करता है। नीचे उल्लिखित रंग कोड मानों का उपयोग करें।
  • \e[m - रंग प्रॉम्प्ट के अंत को इंगित करता है

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

काला 0;30 नीला 0;34 हरा 0;32 सियान 0;36 लाल 0;31 बैंगनी 0;35 भूरा 0;33 [नोट: गहरे रंग के लिए 0 को 1 से बदलें]

निम्नलिखित लाइनों को .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" [नोट: यह हल्के ग्रे बैकग्राउंड के लिए है]

बैकग्राउंड और फोरग्राउंड का संयोजन

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m" [नोट: यह हल्के नीले फोरग्राउंड और हल्के ग्रे बैकग्राउंड के लिए है]

उपरोक्त बैकग्राउंड और फोरग्राउंड रंग को स्थायी बनाने के लिए .bash_profile या .bashrc में निम्नलिखित जोड़ें।

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

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

  • \e[40m
  • \e[41m
  • \e[42m
  • \e[43m
  • \e[44m
  • \e[45m
  • \e[46m
  • \e[47m

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]>

7. tput का उपयोग करके प्रॉम्प्ट रंग बदलें

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

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

tput रंग क्षमताएं:

  • tput setab [1-7] - ANSI एस्केप का उपयोग करके बैकग्राउंड रंग सेट करें
  • tput setb [1-7] - बैकग्राउंड रंग सेट करें
  • tput setaf [1-7] - ANSI एस्केप का उपयोग करके फोरग्राउंड रंग सेट करें
  • tput setf [1-7] - फोरग्राउंड रंग सेट करें

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

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

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

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

8. PS1 वेरिएबल के लिए उपलब्ध कोड्स का उपयोग करके अपना खुद का प्रॉम्प्ट बनाएं

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

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

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

आप नीचे दिखाए अनुसार PS1 में एक bash शेल फ़ंक्शन को भी आमंत्रित कर सकते हैं।

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]> [नोट: यह चल रही httpd प्रक्रियाओं की कुल संख्या प्रदर्शित करता है]

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

function httpdcount { ps aux | grep httpd | grep -v grep | wc -l } export PS1='\u@\h [`httpdcount`]> '

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]> [नोट: यह वर्तमान निर्देशिका के कुल फाइल आकार को PS1 प्रॉम्प्ट में प्रदर्शित करने के लिए totalfilesize.sh निष्पादित करता है] 

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

अनुशंसित पठन

Bash Cookbook, कार्ल अल्बिंग, जेपी वॉसन और कैमरन न्यूमैन द्वारा. Bash एक बहुत शक्तिशाली शेल है। यह पुस्तक आपको bash शेल में मास्टर बनने और अत्यधिक उत्पादक बनने में मदद करेगी। चाहे आप एक सिसएडमिन, DBA या डेवलपर हों, आपको किसी बिंदु पर शेल स्क्रिप्ट लिखनी होगी। एक बुद्धिमान सिसएडमिन जानता है कि एक बार जब आप शेल-स्क्रिप्टिंग तकनीकों में मास्टर हो जाते हैं, तो आप शेल-स्क्रिप्ट्स को ग्रंट कार्य करने देकर अपने सर्वर्स को ऑटो-पायलट मोड पर रख सकते हैं। सिसएडमिन के ऑटो-पायलट मोड तक पहुंचने के लिए, आपको निश्चित रूप से इस कुकबुक में प्रदान किए गए उदाहरणों में मास्टर होने की आवश्यकता है। वहाँ कई Bash शेल पुस्तकें हैं। लेकिन, यह पुस्तक उन सभी में शीर्ष पर है क्योंकि यह बहुत सारे विस्तृत उदाहरण देती है।

  1. Bash में मास्टरी: एक अनुकूलित Linux अनुभव के लिए टर्मिनल रंग और प्रॉम्प्ट अनुकूलित करें Bash में मास्टरी: एक अनुकूलित Linux अनुभव के लिए टर्मिनल रंग और प्रॉम्प्ट अनुकूलित करें

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

  1. WSL के साथ Windows 10 पर Bash इंस्टॉल और उपयोग करें - चरण-दर-चरण ट्यूटोरियल WSL के साथ Windows 10 पर Bash इंस्टॉल और उपयोग करें - चरण-दर-चरण ट्यूटोरियल

    यहां बताया गया है कि Windows पर Linux शेल को कैसे सेट अप और उपयोग करें – Windows Subsystem for Linux (WSL) का उपयोग करके। यह ट्यूटोरियल 2020 के बाद से Windows 10 के अप-टू-डेट संस्करणों के लिए अभिप्रेत है। मैं Windows 10 के पुराने संस्करणों या Windows 8/7/XP/3.1 के लिए अन्य विधियों पर WSL का उपयोग कै

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

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