मैं उबंटू में कुछ शाप देने वाले शब्दों को कैसे सिखाऊं?


21

जब बैश एक अज्ञात कमांड (शब्द?) का सामना करता है, तो यह ऐसा करता है:

The program 'hello' can be found in the following packages:
 * hello
 * hello-debhelper
Try: sudo apt-get install <selected package>

मैं यह जानना चाहूंगा कि यह कैसे किया जाता है इसलिए मैं इसे संपादित कर सकता हूं या इससे पहले कि घर में विकसित शब्दकोश से अज्ञात शब्द को पार करने के लिए कुछ जोड़ सकता हूं जिसमें वाक्यांश होगा: उत्तर जोड़े जो तब आउटपुट में भेजे जा सकते हैं।

मैं इसके लिए पर्याप्त नहीं दिखने का दोषी हूं .. लेकिन मैंने जिन कुछ बैश गाइडों को खोदने की कोशिश की, उनमें कुछ भी नहीं था। शायद मैं गलत स्थानों पर देख रहा हूँ .. कोई संकेत?

और हाँ, मैं ऐसा हर बार कर रहा हूँ जब मैं wtf टाइप करता हूँ जब कोई प्रोग्राम विफल होता है, तो मैं चाहता हूँ कि मेरे ऊपर कुछ अच्छा फेंके ...


1
जब हम इस पर हैं, तो आप इसे पूरी तरह से कैसे अक्षम करेंगे?
user606723


एक अन्य उपयोगी लिंक: wiki.ubuntu.com/CommandNotFoundMagic
ग्लेन जैकमैन

जवाबों:


21

फ़ंक्शन परिभाषा के /etc/bash.bashrcलिए अपने में देखें command_not_found_handle

यदि आप उस व्यवहार को हटाना चाहते हैं, तो इसे अपने .bashrc में डालें

[[ $(type -t command_not_found_handle) = "function" ]] && 
  unset -f command_not_found_handle

यदि आप अनुकूलित करना चाहते हैं, तो आप कर सकते हैं

# see http://stackoverflow.com/questions/1203583/how-do-i-rename-a-bash-function
alias_function() {
  eval "${1}() $(declare -f ${2} | sed 1d)"
}

alias_function orig_command_not_found_handle command_not_found_handle 

command_not_found_handle() {
  command=$1
  shift
  args=( "$@" )

  do your stuff before
  orig_command_not_found_handle "$command" "${args[@]}"
  do your stuff after
}

1
मुझे यह तरीका पसंद है।
18

1
वाह! मुझे alias_function का विचार पसंद आया :-)
ऐशसेन

वर्तमान परिभाषा को देखने / जांचने के लिए,:declare -p -f command_not_found_handle
Randall

4

यह संभवतः उपयोगी हो सकता है ...

आदेश-न-पाया गया पैकेज वह है जो आपको जादुई प्रतिक्रिया देता है। मुझे यकीन नहीं है कि अगर इसे अनुकूलित करना संभव है, लेकिन यह देखने लायक हो सकता है।

एक और विकल्प जो मुझे लगता है कि आप जो करने की कोशिश कर रहे हैं, वह आपकी .bashrc फ़ाइल में एक उपनाम जोड़ने के लिए होगा जब भी आप 'wtf' या ऐसा कुछ टाइप करते हैं, तो एक संदेश प्रिंट होता है:

alias wtf='echo "chill out man"'

इसे अपनी ~ / .bashrc फ़ाइल में जोड़ें, और फिर करें: source $HOME/.bashrc

जब भी आप wtfअपने टर्मिनल में टाइप करते हैं तो यह एक संदेश प्रिंट करेगा । आप इस उपनाम को एक स्क्रिप्ट भी कह सकते हैं जो अधिक विस्तृत संदेश या कुछ समान प्रिंट करता है। संभावनाएं अनंत हैं!


3

यह व्यवहार सिस्टम-वाइड बैश कॉन्फ़िगरेशन फ़ाइल में परिभाषित किया गया है /etc/bash.bashrc:

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found ]; then
  function command_not_found_handle {
    # check because c-n-f could've been removed in the meantime
    if [ -x /usr/lib/command-not-found ]; then
      /usr/bin/python /usr/lib/command-not-found -- "$1"
      return $?
    elif [ -x /usr/share/command-not-found ]; then
      /usr/bin/python /usr/share/command-not-found -- "$1"
      return $?
    else
      return 127
    fi
  }
fi

इसे अनुकूलित करने के लिए, बस इस फ़ंक्शन को अपने आप में ओवरराइड करें ~/.bashrc:

function command_not_found_handle {
  echo "Sorry, smotchkiss, try again."
}

0

@ user606723, यदि आप इस व्यवहार से पूरी तरह छुटकारा पाना चाहते हैं:

sudo apt-get remove command-not-found command-not-found-data 

अगर वह काम नहीं करता है, तो यह कोशिश करें:

sudo apt-get purge command-not-found command-not-found-data 

यदि आप व्यवहार वापस लेना चाहते हैं:

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