कैसे कमांड प्रॉम्प्ट को bash में कस्टमाइज़ करें

बैश शेल में, कमांड प्रॉम्प्ट वह पाठ दिखाया जाता है जब आपको इनपुट के लिए संकेत दिया जा रहा हो। अधिकांश प्रणालियों पर, यह इस तरह दिखता है:

प्रॉम्प्ट में, कोई भी कमांड चलाने से पहले आपके पास जानकारी हो सकती है। उदाहरण के लिए, ऊपर दिया गया संकेत आपको निम्नलिखित दिखाता है।

  1. आप कौन हैं (उपयोगकर्ता नाम का एक उपयोगकर्ता )
  2. तुम कहाँ हो (एक कंप्यूटर जिसका नाम myhost है )
  3. आपकी वर्किंग डायरेक्टरी क्या है ( ~, जो आपके होम डायरेक्टरी का संक्षिप्त नाम है)

शायद सबसे महत्वपूर्ण डॉलर चिह्न (" $ ") है, जो एक विशेष चरित्र है जो इंगित करता है कि आप एक गैर-रूट उपयोगकर्ता के रूप में लॉग इन हैं। यदि आप वर्तमान में रूट के रूप में लॉग इन थे, तो यह वर्ण इसके बजाय पाउंड साइन (" # ") होगा।

प्रांप्ट का प्रतिनिधित्व करने वाला स्ट्रिंग PS1 नामक विशेष पर्यावरण चर में संग्रहीत किया जाता है। ऊपर दिए गए संकेत के लिए, इसका मूल्य निम्न की तरह दिखता है।

 "\ [ईमेल संरक्षित] \ h: \ W \ $" 

इस स्ट्रिंग में चार विशेष वर्ण हैं: \ u, \ h, \ W, \ $ । हर बार प्रॉम्प्ट प्रदर्शित होने पर वास्तविक मूल्यों के साथ बदले जाने वाले ये चरित्र अनुक्रम बच जाते हैं।

विशेष वर्ण

नीचे दी गई तालिका में सूचीबद्ध विशेष वर्ण क्रम का उपयोग बैश शेल प्रांप्ट में किया जा सकता है।

चरित्र क्रममें अनुवाद करता है
\ए"अलार्म" चरित्र। ट्रिगर एक बीप या एक स्क्रीन फ्लैश
\ घवर्तमान तिथि, प्रारूप सप्ताह के महीने की तारीख (जैसे, बुधवार 13 मई ) में प्रदर्शित की गई है।
\ D { प्रारूप }वर्तमान तिथि और समय को स्ट्रैटफ़ाइम द्वारा व्याख्या किए गए प्रारूप के अनुसार प्रदर्शित किया जाता है। यदि प्रारूप छोड़ा गया है, तो \ D {} वर्तमान 12-घंटे AM / PM समय प्रदर्शित करता है (उदाहरण, 07:23:01 PM )।
\ ईएक बच चरित्र (ASCII 27)
\ e [ संख्या एमरंग में प्रदर्शित करने के लिए एक अनुक्रम की शुरुआत को दर्शाता है, जहां संख्या एक संख्या है, या संख्याओं की जोड़ी है, जो निर्दिष्ट करता है कि किस रंग और शैली का उपयोग करना है। रंगों की सूची और उनकी संख्या जोड़े के लिए नीचे देखें।
\ ई [मीटररंग में प्रदर्शित करने के लिए एक अनुक्रम के अंत को दर्शाता है।
\ hमशीन का होस्टनाम, पहले तक "" उदाहरण के लिए, यदि सिस्टम का होस्टनाम myhost.mydomain है, तो \ h myhost प्रदर्शित करता है
\ एचमशीन का पूरा होस्टनाम।
\ jशेल द्वारा प्रबंधित की जा रही नौकरियों की संख्या।
\ एलशेल का टर्मिनल डिवाइस पहचानकर्ता, आमतौर पर एकल-अंक संख्या।
\ nएक नई लाइन
\ rकैरिज रिटर्न
\ रोंशेल का नाम (प्रक्रिया का आधार जो वर्तमान बैश सत्र की शुरुआत करता है)।
\ t24-घंटे HH: MM: SS प्रारूप (उदाहरण, 19:23:01 ) में प्रदर्शित वर्तमान समय।
\ टी12-घंटे HH: MM: SS प्रारूप (उदाहरण 07:23:01 ) में प्रदर्शित वर्तमान समय।
\ @12-घंटे HH: MM: SS AM / PM प्रारूप (उदाहरण, 07:23:01 PM ) में प्रदर्शित वर्तमान समय।
\ए24-घंटे एचएच में वर्तमान समय: एमएम प्रारूप, (जैसे, 19:23 )।
\ यूवर्तमान उपयोगकर्ता का उपयोगकर्ता नाम।
\ vबैश संस्करण संख्या (उदाहरण के लिए, 4.3 )।
\ वीबैश संस्करण और पैच संख्या (जैसे, 4.3.30 )।
\ wवर्तमान निर्देशिका। उपयोगकर्ता की होम निर्देशिका को एक टिल्ड (" ~ ") के रूप में संक्षिप्त किया गया है। उदाहरण के लिए, / usr / bin, ~, या ~ / दस्तावेज
\ डब्ल्यूवर्तमान कार्य निर्देशिका (जैसे, बिन, ~, या दस्तावेज़ ) का आधार।
\!वर्तमान कमांड का इतिहास नंबर।
\ #वर्तमान कमांड की कमांड संख्या (कमांड संख्या इतिहास की संख्या की तरह है, लेकिन जब आप नया बैश सत्र शुरू करते हैं तो वे शून्य पर रीसेट हो जाते हैं)।
\ nnnASCII वर्ण जिसका अष्टक मान nnn है।
\\एक बैकस्लैश
\ [गैर-मुद्रण वर्णों के किसी भी क्रम की शुरुआत, जैसे कि टर्मिनल नियंत्रण कोड।
\]गैर-मुद्रण अनुक्रम के अंत को चिह्नित करता है।
\ $प्रिंट्स # यदि यूआईडी शून्य (सुपरयूज़र) है, या $ यदि शून्य से अधिक है (किसी और)।

वर्तमान सत्र के लिए संकेत बदलना

आप PS1 पर्यावरण चर को सेट कर सकते हैं क्योंकि आप स्टेटमेंट फॉर्म में NAME = VALUE के साथ किसी अन्य चर को bash में सेट कर सकते हैं। तो मानक प्रॉम्प्ट सेट करने के लिए, आप कमांड लाइन पर निम्नलिखित टाइप कर सकते हैं।

 PS1 = "\ [ईमेल संरक्षित] \ h: \ W \ $" 

... और आपका संकेत तुरंत बदल जाएगा। अपने संकेत के बाद एक अतिरिक्त स्थान के लिए स्ट्रिंग में डॉलर के संकेत के बाद अंतिम स्थान को नोटिस करें, जिससे आपको प्रॉम्प्ट से आपके द्वारा टाइप किए गए आदेशों को अलग करना आसान हो जाता है। अतिरिक्त स्थान आवश्यक नहीं है, लेकिन यह अनुशंसित है।

ध्यान दें कि कमांड में, PS1, =, और स्ट्रिंग के बीच कोई रिक्त स्थान नहीं हैं।

भविष्य के सभी सत्रों के लिए संकेत बदलना

यदि आप हर नए सत्र के लिए संकेत बदलना चाहते हैं, तो आपको अपनी बैश स्टार्टअप फ़ाइलों को संपादित करने की आवश्यकता है। हर बार जब आप एक टर्मिनल सत्र शुरू करते हैं, तो निम्न फाइलें, यदि वे मौजूद हैं, तो उन्हें स्क्रिप्ट के रूप में पढ़ा और निष्पादित किया जाता है:

/ etc / प्रोफ़ाइल ~ / .bash_profile ~ / .bash_login

~ / .Profile

पहली फ़ाइल, / etc / प्रोफाइल, सिस्टम पर किसी भी उपयोगकर्ता के लिए एक स्टार्टअप स्क्रिप्ट है जो बैश सत्र शुरू करता है। प्रत्येक उपयोगकर्ता के लिए संकेत बदलने के लिए, आपको इस फ़ाइल को संपादित करने की आवश्यकता है, और ऐसा करने के लिए आपको सुपरसुसर विशेषाधिकारों की आवश्यकता है।

 सुडो vi / etc / प्रोफाइल 

उदाहरण के लिए, उपरोक्त कमांड आपको अपने पासवर्ड के लिए संकेत देगा, और यदि आप sudoers सूची में हैं, तो vi संपादक का उपयोग करके सुपर बैशर के रूप में यूनिवर्सल बैश स्टार्टअप फ़ाइल खोलें।

अन्य तीन फाइलों को ऊपर सूचीबद्ध क्रम में और उसके बाद / etc / प्रोफाइल के लिए देखा जाता है । ये तीन फाइलें आपके होम डायरेक्टरी में रहती हैं, इसलिए इन्हें केवल आपके लिए ही निष्पादित किया जाता है। वे PS1 को एक से अधिक स्थानों पर परिभाषित कर सकते हैं, इसलिए आपको फ़ाइलों को ध्यान से पढ़ना चाहिए कि वे आपके सिस्टम पर कैसे कॉन्फ़िगर किए गए हैं। उदाहरण के लिए, कई सिस्टम आपके टर्मिनल को रंग का समर्थन करते हैं या नहीं, इसके आधार पर एक अलग PS1 मान का उपयोग करेगा।

तीन फ़ाइलों में से कोई भी मौजूद हो सकती है और इसका उपयोग आपके बैश सत्र के लिए किया जा सकता है, लेकिन यदि एक से अधिक हैं, तो उन्हें सूचीबद्ध क्रम में निष्पादित किया जाएगा।

यदि आप अपनी स्टार्टअप फ़ाइलों में लाइनों को हटाना या बदलना नहीं चाहते हैं, तो आप एक कस्टम प्रॉम्प्ट लागू करने के लिए अपनी एक फ़ाइल के अंत में एक नया PS1 = स्टेटमेंट भी जोड़ सकते हैं।

अपने प्रॉम्प्ट में रंग जोड़ना

यदि आप एक टर्मिनल का उपयोग कर रहे हैं जो रंग का समर्थन करता है (और आप शायद हैं), तो आप अपने प्रॉम्प्ट में रंग जोड़ सकते हैं। इस प्रारूप का अनुसरण करने वाले विशेष वर्ण अनुक्रमों का उपयोग करके रंग जोड़े जाते हैं:

\ e [ संख्या एमएक रंगीन खंड शुरू होता है। संख्या मान एक विशेष संख्या, या संख्याओं की जोड़ी है, जो रंग को निर्दिष्ट करती है।
\ ई [मीटररंगीन खंड के अंत को दर्शाता है; डिफ़ॉल्ट रंग में रीसेट करता है

उदाहरण के लिए, शीघ्र स्ट्रिंग:

 PS1 = "\ e [1; 35m यह चमकीला बैंगनी है। \ e [0; 35m ... और यह गहरा बैंगनी है। \ e [m] 

इस तरह दिखने वाला प्रॉम्प्ट तैयार करेगा:

यहां उन रंगों की सूची दी गई है जिनका आप उपयोग कर सकते हैं, और उन्हें निर्दिष्ट करने वाली संख्याएं:

संख्या (रों)रंग / स्टाइलसंख्या (रों)रंग / स्टाइल
0; 30काली1; 30अंधेरे भूरा
0; 31लाल1; 31चमकदार लाल
0; 32हरा1; 32चमकीला हरा
0; 33भूरा1; 33पीला
0; 34नीला1; 34चमकदार नीला
0; 35बैंगनी1; 35चमकीला बैंगनी
0; 36सियान1; 36उज्ज्वल सियान
0; 37धूसर1; 37सफेद
4; 30काला, रेखांकित40पृष्ठभूमि: डार्क ग्रे
4; 31लाल, रेखांकित41पृष्ठभूमि: लाल
4; 32हरा, रेखांकित किया हुआ42पृष्ठभूमि: हरा
4; 33भूरा, रेखांकित43पृष्ठभूमि: पीला
4; 34नीला, रेखांकित44पृष्ठभूमि: नीला
4; 35बैंगनी, रेखांकित45पृष्ठभूमि: बैंगनी
4; 36सियान, रेखांकित46पृष्ठभूमि: सियान
4; 37धूसर, रेखांकित47पृष्ठभूमि: ग्रे

यहाँ कुछ उदाहरण दिए गए हैं, और वे क्या दिखते हैं:

 PS1 = "\ e [0; 31mRed \ e [0; 32mGreen \ e [0; 33mBrown \ e [0; 34mBlue \ e [0; 35mPurple \ e [0; 36mCyan \ e [0; 37mGray \ e [m] 

 PS1 = "रेखांकित: \ e [4; 31mRed \ e [4; 32mGreen \ e [4; 33mBrown \ e [4; 34mBlue \ e [4; 35mPurple / e [4; 36mCyan \ e [4; 37mGray \ e] मीटर " 

 PS1 = "\ e [44m \ e [1; एक नीले रंग की पृष्ठभूमि पर 35mBright बैंगनी \ e [m"