आप बैश उपयोग कर रहे हैं, मैं तुम्हें सिफारिश करेंगे इस तरह एक समारोह बनाने के लिए:
function custom_cd() { custom_command $1; cd $1; }
alias cd='custom_cd'
यहां आपका कस्टम आदेश कुछ भी हो सकता है जो विशिष्ट आदेशों को निष्पादित करेगा आपके द्वारा दर्ज निर्देशिका में।
बाद में घोषित उपनाम यह सुनिश्चित करता है कि टाइपिंग 'सीडी' फ़ंक्शन और असली सीडी कमांड का आह्वान करेगी।
संपादित: अपनी जरूरत के लिए एक उदाहरण
function custom_cd() {
if [ -z "$1" ];
then
target=~
else
target=$1
fi
target=${target%/}
parent=$(dirname `readlink -f $target`)
grand_parent=`dirname $parent`
script=$grand_parent/`basename $target`.sh
if [ -x $script ];
then
`$script`
fi
cd $1
}
स्पष्टीकरण:
हम एक चर निर्देशिका आप दर्ज करना चाहते हैं की मूल युक्त पैदा करते हैं। फिर हम माता-पिता के माता-पिता को पुनर्प्राप्त करते हैं। फिर हम दादाजी निर्देशिका में स्क्रिप्ट नाम बनाते हैं।
फिर इस फ़ाइल नाम की निष्पादन योग्यता की जांच की जाती है, यदि हां, तो स्क्रिप्ट निष्पादित की जाती है, और अंत में वास्तविक सीडी कमांड निष्पादित होता है।
उपनाम से पहले फ़ंक्शन को परिभाषित करने के लिए सावधान रहें, अन्यथा यह अनंत रिकर्सन का कारण बन जाएगा!
सुरक्षा के लिए, फ़ंक्शन में 'अंतर्निहित सीडी' का उपयोग यह सुनिश्चित करने के लिए करें कि आप उपनाम को मार नहीं रहे हैं। वास्तव में, यदि आप "बिल्टिन" कमांड का उपयोग करते हैं, तो आपको उपनाम की आवश्यकता नहीं है, आप फ़ंक्शन "cd" नाम दे सकते हैं। –
@glennjackman को बिल्टिन के बारे में पता नहीं था, मुझे संदेह था कि इस तरह कुछ ऐसा था, अच्छा! – SirDarius
यह बहुत अच्छा काम किया। मैंने सी शैली में पोर्ट की गई इस शैली में कुछ लागू किया लेकिन एक बैश संस्करण भी बनायेगा। धन्यवाद! – devshans