आप टैब पूर्णता का उपयोग कर सकते हैं। कई लिनक्स वितरण पर डिफ़ॉल्ट रूप से, बैश सेट किया जाता है ताकि जब आप [TAB] कुंजी को हिट करें, तो आपको संभावित मैचों की एक सूची दी जाए, या यदि सिर्फ एक मैच हो, तो यह सब भर जाता है। सीडी के लिए, यह आम तौर पर वर्तमान कार्यशील निर्देशिका की उपनिर्देशिकाओं की एक सूची है। आप इसे अधिलेखित कर सकते हैं, लेकिन मैं इसके बजाय एक उपनाम बनाने का सुझाव देता हूं, जैसे jd
"जंप डाइरेक्टरी":
alias jd=cd
और फिर, "बुकमार्क" को परिभाषित करते हुए आप jd के लिए पूर्णता चाहते हैं। बहुत अधिक विकल्पों के लिए बैश मैन पेज देखें (आदेश या फ़ंक्शन से मक्खी पर परिणाम उत्पन्न करने सहित), लेकिन सबसे आसान तरीका सिर्फ शब्दों की एक सूची है -W
:
पूरा -W "/ srv / www ~ / tmp ~ / work" jd
अब, टाइप करें jd
और हिट करें [TAB], और आप अपने "बुकमार्क" देखेंगे। किसी भी अस्पष्ट भाग को टाइप करें, और फिर [TAB] को पूरा करने के लिए हिट करें। (उपरोक्त में, ~
मेरे होम डाइरेक्टरी में विस्तार होता है, इसलिए पहले [TAB] मुझे एक देता है /
, और अगर मैं हिट करता हूं w
और [TAB] फिर /srv/www
से भर जाता हूं, तो )
~/.bash_profile
इसे स्थिर रखने के लिए इसे जरूर लगाएं।
या, हम इसे अगले स्तर तक ले जा सकते हैं। एक निर्देशिका बनाएं ~/.shortcuts
- एक डॉट के साथ शुरू, यह छिपा हुआ होगा और आपके अच्छे साफ घर निर्देशिका को मूस नहीं करेगा - और इसे अपने वांछित निर्देशिकाओं के लिए सहानुभूति के साथ भरें। फिर, डाल इस में अपने ~ / .bash_profile:
_list_shortcuts()
{
COMPREPLY=($( compgen -W "$( ls ~/.shortcuts )" -- ${COMP_WORDS[COMP_CWORD]} ))
}
jd()
{
cd -P ~/.shortcuts/$1
}
complete -F _list_shortcuts jd
यह _list_shortcuts
नामों की सूची बनाने के लिए फ़िक्शन में थोड़ा अधिक जटिल पूर्णता को परिभाषित करता है , और jd
एक साधारण उपनाम के बजाय एक फ़ंक्शन बनाता है, क्योंकि हम चाहते हैं कि यह केवल अलग से कार्य करे cd
। -P
करने के लिए ध्वज cd
बनाता है यह सिमलिंक हल, तो सब कुछ पारदर्शी जादू हो जाता है। आपके शॉर्टकट नामों को भी लक्ष्य से मेल नहीं खाना है।
इसलिए:
$ ls -l ~/.shortcuts/
total 0
lrwxrwxrwx. 1 mattdm mattdm 16 Dec 17 19:44 tmp -> /home/mattdm/tmp
lrwxrwxrwx. 1 mattdm mattdm 17 Dec 17 19:44 WORK -> /home/mattdm/work
lrwxrwxrwx. 1 mattdm mattdm 8 Dec 17 19:44 www -> /srv/www
$ jd tmp
$ pwd
/home/mattdm/tmp
$ jd WORK
/home/mattdm/work
और, फैंसी की एक अतिरिक्त खुराक के लिए, jd
बिना किसी पैरामीटर के निष्पादित किए जाने पर अपने सभी शॉर्टकटों की सूची बनाएं :
jd()
{
if [[ -z "$1" ]]; then
(cd ~/.shortcuts; stat -c '%N' *)
else
cd -P ~/.shortcuts/$1
fi
}
नोट: मैं compgen -W $( cmd )
इसके बजाय उपयोग करता हूं compgen -C 'cmd'
क्योंकि उत्तरार्द्ध मेरे लिए कभी काम नहीं करता है और मुझे समझ नहीं आता कि क्यों। यह मेरा खुद का एक नया सवाल हो सकता है। :)