আমি কীভাবে উবুন্টুতে কিছু অভিশাপের শব্দ শিখিয়ে দেব?


21

যখন বাশ একটি অজানা আদেশ (শব্দ?) এর মুখোমুখি হয় তখন এটি এটি করে:

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

আমি যা জানতে চাই তা এটি করা হয় যাতে আমি এটি সম্পাদনা করতে পারি বা বাড়ির বর্ধিত অভিধান থেকে অজানা শব্দটি পরীক্ষা করতে কিছু আগে যুক্ত করতে পারি যার বাক্যাংশ থাকে: উত্তর জোড়া যা পরে আউটপুটটিতে প্রেরণ করা যায়।

আমি এর আশেপাশে যথেষ্ট পরিমাণ অনুসন্ধান না করার জন্য আমি দোষী .. তবে যে কয়েকটি বাশ গাইড আমি খনন করার চেষ্টা করেছি সেগুলির কিছুই ছিল না। হয়তো আমি ভুল জায়গাগুলি দেখছি .. কোন পয়েন্টার?

এবং হ্যাঁ আমি এটি তাই করছি যখনই আমি যখন কোনও প্রোগ্রাম ব্যর্থ হয় তখন ডাব্লুটিএফএফ টাইপ করি, আমি আমার দিকে ফিরে সুন্দর কিছু চাই ...


1
আমরা যখন এটি করছি, আপনি কীভাবে এটি পুরোপুরি অক্ষম করবেন?
ব্যবহারকারী 606723

2
@ ব্যবহারকারী 606723 জিজ্ঞাসা করুন
কণ্ঠস্বর:

আর একটি দরকারী লিঙ্ক: 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
আমি এই পদ্ধতির পছন্দ।
ündrük

1
কি দারুন! আমি ওরফে_ফানশন ধারণাটি পছন্দ করেছি :-)
আনিশন

বর্তমান সংজ্ঞাটি দেখতে / পরীক্ষা করতে, করুন:declare -p -f command_not_found_handle
র্যান্ডাল

4

এটি সম্ভবত কার্যকর হতে পারে ...

কমান্ড না পাওয়া প্যাকেজ হ'ল যা আপনাকে যাদু প্রতিক্রিয়া দেয়। এটি কাস্টমাইজ করা সম্ভব কিনা তা সম্পর্কে আমি নিশ্চিত নই, তবে এটি দেখতেও মূল্যবান হতে পারে।

আমি যা মনে করি আপনি যা করার চেষ্টা করছেন তা করার আরেকটি বিকল্প হ'ল আপনার .bashrc ফাইলে একটি উপন্যাস যুক্ত করা উচিত যখনই আপনি 'ডাব্লুটিএফ' বা এই জাতীয় কিছু টাইপ করেন কোনও বার্তা মুদ্রণ করে:

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

@ ব্যবহারকারীর 606723, যদি আপনি এই আচরণটি সম্পূর্ণরূপে পরিত্রাণ পেতে চান:

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.