प्रारंभ / रोक के लिए टैब-पूर्ण अनुकूल नाम


0

मेरे पास कई स्क्रिप्ट हैं जिनका उपयोग सेवाओं को शुरू करने और रोकने के लिए किया जाता है। टैब पूर्णता का उपयोग करते समय निराशा होती है कि आपको टाइप करने की आवश्यकता है:

 ./serviceScript.sh [sta|sto]

इससे पहले कि शब्द को पूरा करने या रोकने के लिए टैब को पूरा करने के लिए पर्याप्त जानकारी हो।

क्या किसी के पास शब्दों की एक अलग जोड़ी है जिसे समझदारी से शुरुआत के स्थान पर इस्तेमाल किया जा सकता है, या वैकल्पिक रूप से, मेरी समस्या का एक बेहतर समाधान है?

जवाबों:


2

यदि आप केवल हर बार इतना ही टाइप करने से बचना चाहते हैं, तो एक बार टाइप करने के बाद आप कमांड का इतिहास देखने के लिए Ctrl + R का उपयोग कर सकते हैं।

Ctrl + R दबाने के बाद आप लिखना शुरू कर सकते हैं जैसे ही आप लिखना शुरू करते हैं, जैसे ही आप bash इतिहास लिखना शुरू करते हैं, इतिहास से कमांड पूरी हो जाएगी। इसलिए, यदि आपने Ctrl + R दबाने के बाद सिर्फ लिखा था stऔर आपके द्वारा निष्पादित अंतिम कमांड स्टॉप तर्क के साथ थी, जो दिखाई देगा।

यदि आप एक पुराना उदाहरण चाहते हैं, तो स्टार्ट तर्क के साथ कमांड , बस Ctrl + R दबाने से आपको पूर्ण स्टार्ट कमांड मिल जाएगी।


1

यदि शब्द शुरू और रोकना बहुत अधिक है, तो उन उपनामों को क्यों नहीं बनाया जाए जो एक या दूसरे का प्रदर्शन करते हैं?

# (for bash)
alias myservicebegin='serviceScript.sh start'
alias myserviceend='serviceScript.sh stop'

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


1

बैश के लिए आप बैश कम्प्लीशन फीचर का उपयोग कर सकते हैं। अपने डिस्ट्रो से bash_completion पैकेज स्थापित करें। इस बात की अच्छी संभावना है कि आपके पास /etc/init.d स्क्रिप्ट के लिए पहले से ही पूरा होगा। यदि नहीं, तो आप पढ़ सकते हैं कि नेट के आसपास खुद को कैसे पूरा किया जाए। यहाँ एक कड़ी है

एक और तरीका है कि इन जैसे पूर्वनिर्धारित कार्यों का उपयोग किया जाए:

if [[ ${EUID} == 0 ]] ; then # available only for root user
       # rc scripts managing
       rc() { /etc/init.d/$*; }
       complete -o filenames -W "$(cd /etc/init.d/ && echo *)" rc

       rc-start() { for arg in $*; do rc $arg start; done } 
       rc-restart() { for arg in $*; do rc $arg restart; done } 
       rc-stop() { for arg in $*; do rc $arg stop; done } 
       rc-status() { for arg in $*; do rc $arg status; done } 
fi

यहां आप rcinit.d स्क्रिप्ट को कॉल करने के लिए कमांड का उपयोग कर सकते हैं जैसे rc apache2 start:। इसका अनुवाद होगा /etc/init.d/apache2 start। आपकी init.dनिर्देशिका में फ़ाइलों के लिए कमांड के पास स्वतः पूर्णता भी है , जब आप टाइप करते हैं: rc apa[TAB]तो यह स्वतः पूर्ण हो जाएगा rc apache2

अन्य छोटे आदेश सुविधा के लिए हैं: rc-start apache2कॉल करेंगे rc apache2 startऔर इसलिए/etc/init.d/apache2 start

संपादित करें: आप /etc/init.d पथ को /etc/rc.d में बदल सकते हैं यदि आपका डिस्ट्रो सेवाओं के लिए rc.d का उपयोग कर रहा है।


-1: प्रश्न को संबोधित नहीं करता है। ओपी "स्टार्ट" और "स्टॉप" के लिए समानार्थक शब्द की तलाश कर रहा है, जिसके लिए टैब पूर्ण होने से पहले आपको तीन वर्ण टाइप करने की आवश्यकता नहीं होगी। वह पहली जगह में टैब पूरा करने के तरीके की तलाश नहीं कर रहा है।
डेव शेरोहमान

@DaveSherohman, स्पष्ट होने के लिए: जैसा कि मैंने उत्तर में कहा था "एक और तरीका है कि इन जैसे पूर्वनिर्धारित कार्यों का उपयोग करें", का अर्थ है ओपी विभिन्न नामों के साथ कार्यों को नाम दे सकता है, न कि [प्रारंभ | रोक] शब्दों सहित ... उदा।
आरसी

1

मन की पहली बात शुरू / अंत थी, लेकिन ./my_service beginशब्दार्थ से बिलकुल सही नहीं लगता।

भागो / पड़ाव अक्सर के रूप में उपयोग किया जाता है नहीं है, इसलिए वे कठिन याद करने के लिए हो सकता है लेकिन ./my_service runऔर ./my_service haltशब्द के सामान्य अंग्रेजी अर्थ के साथ अच्छी तरह से काम करने लगते हैं।

बस याद रखें कि, यदि आप initअपनी सेवाओं का प्रबंधन करने में सक्षम होना चाहते हैं, startऔर stopआदेशों को तब भी समर्थन देने की आवश्यकता होगी, यदि आप अन्य आदेशों में डालते हैं जो अधिक टैब-पूर्ण-अनुकूल हैं।


0

आप इस तरह से कुछ हैक करने की कोशिश कर सकते हैं:

a=(/etc/init.d/*(x:t))
function start stop restart reload {  /etc/init.d/$1 $0 }
for i (start stop restart reload) compctl -k a $i

यह आपको कुछ ऐसा टाइप करने की अनुमति देगा, restTabsmaTabजिसका विस्तार restart smartmontoolsऔर कॉल करना होगा /etc/init.d/smartmontools restart

लेकिन उस जॉब के वितरण में पहले से ही किसी प्रकार का पूरा कार्य हो सकता है। बस चारों ओर नजर है functions/Completion/Unix/

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