उबंटू के command-not-found
हुक का उपयोग करें , जैसा कि कमांड नॉट मैजिक में निर्दिष्ट है । वर्तमान में इसका उपयोग संकुल को स्थापित करने के लिए सुझाने के लिए किया जाता है। /usr/share/doc/command-not-found/README
जिसका संदर्भ आपके सिस्टम पर स्थापित होना चाहिए।
बेहतर अभी तक, क्योंकि यह command-not-found
पैकेज पर निर्भर नहीं करता है , (री) बैश बिलिन command_not_found_handle
को लागू करने के लिए xdg-open
यदि $1
कोई मौजूदा फ़ाइल है, और पिछले कार्यान्वयन पर अन्य सभी मामलों को सौंपने के लिए।
# Save the existing code for the handler as prev_command_not_found_handle.
# Bit of a hack, as we need to work around bash's lack of lexical closure,
# and cover the case when it is not defined at all.
eval "prev_$(declare -f command_not_found_handle)" >& /dev/null \
|| prev_command_not_found_handle () {
echo "$1: command not found" 1>&2
return 127
}
# Define the new implementation, delegating to prev_handler.
command_not_found_handle () {
if [ -f "$1" ]; then
xdg-open "$1"
else
prev_command_not_found_handle "$@"
fi
}
अच्छा सवाल, निफ्टी फीचर।
इसे कुछ और सोचकर: आपको शायद यह सुविधा पसंद न आए, जितना आप सोचते हैं, जब तक कि आप bash_completion
हैंडलर का विस्तार भी नहीं करते हैं । कल्पना करना चाहते हैं खोलने के लिए file-with-a-long-name.txt
, फिर सेटिंग
alias o='xdg-open'
कर देगा (के बारे में) चार प्रमुख प्रेस पर्याप्त:
o f<Tab><Enter>
जबकि पूर्ण फ़ाइल नाम टाइप करने में एक कठिन 26 लगता है - और यह अपरिहार्य टाइपोस पर बैकस्पेसिंग को बाहर करता है।
command_not_found_handle()
फ़ंक्शन को संशोधित कर सकते हैं/etc/bash.bashrc
?