কোন খারাপ আদেশের পরে ব্যাশ বিরতি দেয়?


23

আপনি যখন কোনও খারাপ কমান্ড টাইপ করছেন, বলুন আপনি কি করতে চান:

$ cd ..
$ ls

তবে পরিবর্তে আপনি খুব দ্রুত টাইপ করুন এবং এল এবং এস এর মধ্যে প্রবেশটি শেষ করুন, যাতে আপনি পান:

$ cd ..
$ l
sbash: l: command not found...

এটি অবশ্যই সমস্ত সময় ঘটে যখন আমরা দ্রুত টাইপ করি। আমি যে বিষয়ে কৌতূহলী তা হ'ল 2.5 সেকেন্ডের (আমার সিস্টেমে) বিরতি কমান্ড পাঠ্যটি পর্দায় প্রদর্শিত হওয়ার পরে বিরতি দেয়। আমার কাছে মনে হয় এটি তাত্ক্ষণিকভাবে কমান্ডটি স্বীকৃতি দেয়, এটি সম্পর্কে ত্রুটি বার্তা প্রিন্ট করে তবে মজা করার জন্য আমাকে কমান্ড লাইনে ফিরে আসার আগে 2.5 সেকেন্ড অপেক্ষা করে। এর কারণ কী? এটির কোনও উপায় কি ঠিক আছে? এটি একটি ছোট বিরক্তি, তবে আমি এটি থেকে মুক্তি পেতে চাই। :)

সম্পাদনা: ফেডোরা 16 সিস্টেম চলছে


আপনি কী ওএসে আছেন তা উল্লেখ করতে ভুলে গেছেন।
ড্যানিয়েল অঙ্গুলিনির্দেশ

আরে, তুমি ওর সাথে কি করছ না? :)
dotjoe

উত্তর:


42

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

আপনি যদি কোনও ডেবিয়ান সিস্টেমে না থাকেন তবে আপনি আপনার ব্যাশ স্টার্টআপ ফাইলের প্রোফাইলগুলি এবং আরও কিছু দেখতে চাইবেন এবং নামটির ফাংশনটিকে কোনও কিছু সংজ্ঞায়িত করে কিনা তা দেখতে চাইবেন command_not_found_handle। যদি সেই বাশ ফাংশনটি সংজ্ঞায়িত করা হয়, তবে আপনি যখনই কোনও কমান্ড চালাবেন তখনই এটি ডাকা হবে এবং আপনার অনুসন্ধানের পথে কোনও উপযুক্ত প্রোগ্রাম খুঁজে পাওয়া যাবে না। আপনি যদি typset | lessআউটপুটটি চালান এবং ব্রাউজ করেন command_not_found_handle()তবে এটির সংজ্ঞা দেওয়া থাকলে আপনি ফাংশনটি দেখতে পাবেন ।

ডেবিয়ান / উবুন্টুতে যে প্যাকেজটি এই আচরণ সরবরাহ করে তা হ'ল আদেশ-না-পাওয়া । আপনি যদি এটি মুছে ফেলেন, তবে আপনি অনুসন্ধানগুলি অক্ষম করবেন যা জিনিসগুলি ধীর করে দেয়।

এখানে একটি উদাহরণ

# command-not-found installed
$ time pwgen
The program 'pwgen' is currently not installed.  To run 'pwgen' please ask your administrator to install the package 'pwgen'
pwgen: command not found

real    0m0.074s
user    0m0.032s
sys     0m0.040s

# purge command-not-found and restart bash
$ time pwgen
-bash: pwgen: command not found

real    0m0.002s
user    0m0.000s
sys     0m0.000s

সঠিক সময়টি অবশ্যই আপনার জন্য আলাদা হবে। আমি একটি সুন্দর মৌমাছি সার্ভারে আমার পরীক্ষা চালিয়েছি।


10
ফেডোরায় আমার ক্ষেত্রে এটি একটি প্যাকেজ হিসাবে পরিচিত হয়েছিল: প্যাকেজকিট-কমান্ড-পাওয়া যায় নি
ফুবু

6

প্রশ্নের অংশটি ছিল "এটি (ফেডোরায়) ঠিক করার কোনও উপায় আছে কি?" আপনার .bashrc ফাইলের নীচে কমান্ড যুক্ত করুন

unset command_not_found_handle

আপনি সম্ভবত এটি আপনার .bashrc এর শেষে (বা এটির নিকটে) করতে চান কারণ আপনি সম্ভবত আপনার .bashrc এর শীর্ষে / ইত্যাদি / বাশ্রিআরসি বা অন্যান্য ব্যাশ স্ক্রিপ্টগুলি চালাচ্ছেন।


5

ফেডোরাতে /etc/PackageKit/CommandNotFound.confকনফিগারেশন ফাইল পরিবর্তন করে এই আচরণটি নিয়ন্ত্রণ করা যায় ।

সেটিংসটি SoftwareSourceSearch=falseবিলম্ব থেকে মুক্তি পাবে কারণ এটি প্যাকেজ ম্যানেজার ব্যবহার করে অনুপস্থিত কমান্ডের সাহায্যে কোনও প্যাকেজ সনাক্ত করার চেষ্টা করবে না।

MaxSearchTime=2000প্যাকেজ অনুসন্ধানের জন্য কোনও ম্যাচ ফেরার জন্য আপনি অপেক্ষা করতে ইচ্ছুক মিলিসেকেন্ডের সংখ্যাটি নির্ধারণের বিকল্পটি পরিবর্তনের পরিবর্তে প্যাকেজ অনুসন্ধানের জন্য অপেক্ষা করা সময়ের পরিমাণটিও পরিবর্তন করতে পারেন। আমি দেখতে পেয়েছি যে 2 সেকেন্ডের ডিফল্ট কোনও ম্যাচ ফেরার জন্য যথেষ্ট দীর্ঘ নয় এবং আপনার টাইপো থাকাকালীন কেবল অযাচিত বিলম্ব ঘটায়।

হয় MaxSearchTimeকার্যকর আউটপুট সরবরাহ করতে বাধা দেবেন বা SoftwareSourceSearchপুরোপুরি বিলম্ব দূর করতে অক্ষম করুন ।

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