एक फ़ोल्डर में प्रवेश करते समय अस्थायी बैश उपनाम सेट करना


13

कभी-कभी मुझे बहुत अनुकूलित बैश उपनाम और शायद कीबाइंडिंग पसंद है जब मैं एक फ़ोल्डर में प्रवेश करता हूं (एक परियोजना हो सकती है जहां मुझे सीएलआई से बहुत सारी कमांड टाइप करने के लिए उपयोग किया जाता है)।

जब मैं "प्रोजेक्टअल्फा /" जैसे एक फ़ोल्डर में प्रवेश करता हूं तो मान लीजिए कि मुझे कुछ कस्टम उपनामों की उम्मीद है:

  • alias doTaskX='./app arg1 arg2...|filter arg1 arg2...'
  • ...

इससे अधिक मैं इसके बारे में सोच रहा था:

  • एक उपयोगी संदेश प्रदर्शित करें जो उपनाम और सामान्य आदेश दिखा रहा है
  • मेरी परियोजना के लिए कुछ सामान्य कस्टम कीबाइंडिंग प्रदर्शित करना

लेकिन जैसे ही मैं अपने प्रोजेक्ट की जड़ छोड़ता हूं ये सेटिंग्स अनुपलब्ध हो जाती हैं।

आज इसे करने के लिए सबसे अच्छा तरीका क्या है?


अब एक विचार आया कि ~ / .Bashrc में "cd" के लिए एक उपनाम का उपयोग करने के लिए, एक निर्देशिका में प्रवेश करने के लिए एक अन्य उपनाम और उस निर्देशिका में छिपे हुए .bashrc को पढ़ने वाला एक नया बैश शुरू करता है ...
gzinho 27

जवाबों:


14

बैश के पास विशेष चर PROMPT_COMMANDहोता है जो कमांड के निष्पादित होने के बाद हर बार निष्पादित होता है, इसलिए आप इसे निम्नानुसार सेट कर सकते हैं:

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && { alias ll=ls; echo "Remember: ll=ls"; } || { unalias ll 2>/dev/null; }'

अब से हर समय आप /tmpनिर्देशिका में llरहेंगे और अन्य उपनाम बनाए जाएंगे और अन्य सभी निर्देशिकाओं में इसे हटा दिया जाएगा।


संभवतः अधिक व्यावहारिक है कि आप अपने सभी उपनामों और अन्य सामानों को एक फ़ंक्शन में इकट्ठा करें (कहें makealias) और दूसरे फ़ंक्शन में सभी unaliases makeunaliasजो आप अपनी आवश्यकताओं के आधार पर चला सकते हैं, कुछ इस तरह

PROMPT_COMMAND='[[ "$PWD" = /tmp ]] && makealias || makeunalias 2>/dev/null'

ध्यान दें कि इस मामले के अलर्ट में कुछ बेकार को रोकने के लिए स्टैडर पुनर्निर्देशन मौजूद है।


ty, मैं इसे आज़माऊँगा। +1 (अगर मैं कर सकता था)
gzinho

1
@ user3697611 आपको अपने स्वयं के प्रश्न का उत्तर स्वीकार करने के लिए किसी भी प्रतिष्ठा की आवश्यकता नहीं है। उत्तर के आगे चेक मार्क पर क्लिक करें।
बरमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.