बैश शेल की प्रॉम्प्ट लंबाई सीमित करें

जब आप 10.3 और 10.4 में टर्मिनल का उपयोग करते हैं, तो आप संभवतः बैश शेल का उपयोग कर रहे होते हैं - यह डिफ़ॉल्ट है, जब तक कि आप एक अपग्रेड इंस्टॉल का उपयोग नहीं कर रहे हैं जो पहले टीसीएसएच का उपयोग कर रहा था।

यदि आप "शेल" से परिचित नहीं हैं, तो यह वास्तव में एक प्रोग्राम है जो चलता है और टर्मिनल के माध्यम से ओएस एक्स के यूनिक्स पक्ष के साथ संचार करते समय आपके द्वारा उपयोग किया जाने वाला इंटरफ़ेस प्रदान करता है। OS X के पहले संस्करणों में, Apple ने डिफ़ॉल्ट शेल को सेट किया था टी.सी.एस.एच, लेकिन पर स्विच किया गया दे घुमा के OS X 10.3 और नए संस्करण के रिलीज़ के साथ।

बैश की विशेषताओं में से एक एक प्रॉम्प्ट लाइन है जो वर्तमान कार्यशील निर्देशिका को दिखाती है। जैसे ही आप फ़ाइल संरचना में नेविगेट करते हैं, आपकी प्रॉम्प्ट स्ट्रिंग लगातार वर्तमान कार्यशील निर्देशिका को दर्शाती है:

gargantua5:~ robg$ cd लाइब्रेरी/gargantua5:~/Library robg$ cd विजेट्स/gargantua5:~/Library/Widgets robg$ cd विंडगुरु.wdgt/gargantua5:~/Library/Widgets/WindGuru.wdgt robg$

हालाँकि यह सिद्धांत में बहुत अच्छा है, व्यवहार में यह उतना अच्छा नहीं हो सकता है। विचार करें कि जब आप गहराई से दबे सिस्टम फ़ोल्डर में ड्रिल-डाउन करते हैं, तो क्या होता है, जैसे कि यह:

gargantua5:/System/Library/CoreServices/Dock.app/Contents/Resources robg$

यदि आपके पास 80-वर्ण वाली टर्मिनल विंडो है, तो उपरोक्त प्रॉम्प्ट लाइन वास्तव में आपकी स्क्रीन की चौड़ाई के चारों ओर पूरी तरह से घूमती है। इससे टर्मिनल में काम करना बहुत कठिन हो जाता है, क्योंकि आपकी स्क्रीन कमांड, पथ डिस्प्ले और आउटपुट की भ्रमित करने वाली गड़बड़ी बन जाती है। इस समस्या के कई समाधान हैं, लेकिन यहां दो हैं जो मुझे पसंद हैं।

इन दोनों समाधानों के लिए, आपको इसका उपयोग करने की आवश्यकता होगी छठी आपके उपयोगकर्ता को संपादित करने के लिए संपादक .bash_profile फ़ाइल, आपकी होम निर्देशिका में। टर्मिनल लॉन्च करें और टाइप करके सुनिश्चित करें कि आप अपनी होम डायरेक्टरी में हैं सीडी और फिर रिटर्न दबाएँ। अगला, टाइप करें vi .bash_profile. यदि आपके पास कोई मौजूदा फ़ाइल है, तो वह संपादन के लिए खुल जाएगी। यदि नहीं, तो एक नई फ़ाइल खुलेगी. वहां से, अपनी पसंद के अनुसार उचित समाधान का पालन करें।

समाधान 1: टर्मिनल के शीर्षक पट्टी का उपयोग करें

अपने प्रॉम्प्ट में अपना पथ प्रदर्शित करने के बजाय, आप अपने टर्मिनल के विंडो शीर्षक में प्रॉम्प्ट को इस तरह प्रदर्शित कर सकते हैं:

ऐसा करने के लिए, आपको बस इन दो पंक्तियों को इसमें जोड़ना होगा .bash_profile फ़ाइल:

निर्यात PROMPT_COMMAND='echo -n "^[]1;$PWD^G"'PS1='e[7m [u] :[e[0;m] '

हालाँकि, आप उपरोक्त सभी पाठ को आसानी से कॉपी और पेस्ट नहीं कर सकते हैं - दूसरी पंक्ति काम करेगी, लेकिन पहली पंक्ति में दो विशेष "उद्धृत" कमांड हैं। तो यहां बताया गया है कि इसे कैसे दर्ज किया जाए। सबसे पहले दबाएँ मैं डालने के लिए छठी इन्सर्ट मोड में.

इसके बाद, पहले कैरेट तक सब कुछ कॉपी और पेस्ट करें, लेकिन इसमें शामिल नहीं करें (^). निम्नलिखित दो अक्षर, ^[, वास्तविक एस्केप कुंजी का प्रतिनिधित्व करें। इसे टाइप करने के लिए छठी, कंट्रोल-V टाइप करें, फिर एस्केप दबाएँ। यह कोडित एस्केप मुख्य पात्रों को दर्ज करेगा। फिर आप अगले कैरेट तक सब कुछ कॉपी और पेस्ट कर सकते हैं, लेकिन फिर से शामिल नहीं कर सकते। प्रवेश हेतु ^जी, आप उसी प्रक्रिया का उपयोग करते हैं - कंट्रोल-वी टाइप करें, फिर कंट्रोल-जी दबाएं। अंत में, समापन डबल-उद्धरण और एकल उद्धरण टाइप करें। वाह!

दो लाइन डालने के बाद Escape दबाएं, फिर टाइप करें :w अपने परिवर्तनों को सहेजने के लिए, और :क्यू संपादक छोड़ने के लिए. एक नई टर्मिनल विंडो खोलें, और आपको शीर्षक में पथ और अपना उपयोगकर्ता नाम पकड़े हुए एक अच्छा संक्षिप्त संकेत देखना चाहिए।

मैं सेट करने के पहले कार्यों के अलावा, इन दो आदेशों में चल रहे वूडू को समझाने का प्रयास नहीं करूंगा विंडो शीर्षक, और दूसरा आपके उपयोगकर्ता नाम के काले-पर-सफेद संस्करण को बनाने के लिए कुछ ASCII कोड का उपयोग करता है तत्पर। एस्केप दबाकर फ़ाइल को सहेजें जबकि कई लोग विंडो शीर्षक में पथ के साथ इस अल्ट्रा-क्लीन प्रॉम्प्ट को पसंद करते हैं, मुझे लगता है कि I जैसे कि कम से कम मेरे प्रॉम्प्ट में मेरी वर्तमान निर्देशिका का एक संक्षिप्त अनुस्मारक, जो वास्तव में आपको अगले समाधान के साथ मिलेगा।

समाधान 2: प्रदर्शित पथ की लंबाई सीमित करें

दूसरा समाधान प्रॉम्प्ट के पथ को दिए गए वर्णों की संख्या तक सीमित करता है। भले ही आप सिस्टम में कितनी भी गहराई से घुस जाएं, आपको प्रॉम्प्ट में केवल अपने पसंदीदा वर्णों की संख्या ही दिखाई देगी। खोलें .bash_profile फ़ाइल जैसा कि ऊपर बताया गया है, दबाएँ मैं इन्सर्ट मोड दर्ज करने के लिए, और फिर निम्नलिखित कोड पेस्ट करें:

फ़ंक्शन प्रॉम्प्ट_कमांड { # $PWD के कितने अक्षर स्थानीय pwd_length=23 रखे जाने चाहिए यदि [ $(echo -n $PWD | wc -c | tr -d " ") -gt $pwd_length ] तो newPWD='$(echo -n $PWD | sed -e 's/.*(.{$pwd_length})/1/')' अन्यथा newPWD='$(echo -n $PWD)' fi}PROMPT_COMMAND=prompt_commandexport PROMPT_COMMANDPS1='e[7m$newPWD [यू]:[ई[0;एम] '

जैसा आप देखते हैं वैसा ही सब कुछ छोड़ दें, संभवतः के अलावा 23, जो दर्शाता है कि आप प्रॉम्प्ट के पथ में कितने अक्षर देखना चाहते हैं। जब पूरा हो जाए, तो इन्सर्ट मोड से बाहर निकलने के लिए एस्केप को हिट करें, फिर टाइप करें :w और :क्यू.

पहले समाधान की तरह, यहां पथ को छोटा करने के लिए कुछ फैंसी जादू-टोना चल रहा है (फ़ंक्शन यही करता है), और फिर इसे अपने प्रॉम्प्ट में प्रदर्शित करें। एक नई टर्मिनल विंडो खोलें और गहराई से दबे हुए फ़ोल्डर में नेविगेट करें, और आपको कुछ इस तरह देखना चाहिए:

संसाधन/English.lproj [robg]:

हालाँकि यह पूर्ण पथ जितना उपयोगी नहीं है, यह कम से कम मुझे यह याद दिलाने के लिए पर्याप्त है कि मैं अपना अगला आदेश निष्पादित करने से पहले कहाँ था।

  • Jul 30, 2023
  • 49
  • 0