আমি কি ট্যাবে স্বতঃ-সমাপ্তির কেসটিকে বাশ-সংবেদনশীল করতে পারি?


144

উবুন্টুর টার্মিনালটি কেস-সংবেদনশীল স্বয়ংক্রিয় সমাপ্তি ব্যবহার করে, যেমন আমার ধারণা লিনাক্সের জন্য প্রত্যাশিত।

তবে আমি মনে করি এর পরিবর্তে কেস-সংবেদনশীল ব্যবহার করা আপনার পক্ষে নাম শুরু করার সময় যথাযথ হওয়া বাঁচাতে আরও সুবিধাজনক হবে এবং সম্ভবত অতিরিক্ত মিথ্যা ধনাত্মক হতে পারে। এই আচরণ পরিবর্তন করা সম্ভব?


খুব ভাল প্রশ্ন। একটি ব্যবহারযোগ্যতার সরঞ্জাম হিসাবে, ট্যাব-সমাপ্তি কম্পিউটারের নামকরণগুলির ক্ষেত্রে সাধারণভাবে কম্পিউটার সিস্টেমের মতো কঠোর হওয়া উচিত নয়।
মাস্টারেক্সিলো

উত্তর:


169

তৈরী করার উদ্দেশ্যে bashবর্তমান ব্যবহারকারীর জন্য কেস-অবশ:

টার্মিনালে নিম্নলিখিত শেল স্ক্রিপ্টটি চালান:

# If ~/.inputrc doesn't exist yet: First include the original /etc/inputrc
# so it won't get overriden
if [ ! -a ~/.inputrc ]; then echo '$include /etc/inputrc' > ~/.inputrc; fi

# Add shell-option to ~/.inputrc to enable case-insensitive tab completion
echo 'set completion-ignore-case On' >> ~/.inputrc

একটি নতুন শেল শুরু করুন (টার্মিনালটি আবার খুলুন)।

সিস্টেমভেদে পরিবর্তনগুলি করতে:

# add option to /etc/inputrc to enable case-insensitive tab completion for all users
echo 'set completion-ignore-case On' >> /etc/inputrc
# you may have to use this instead if you are not a superuser:
echo 'set completion-ignore-case On' | sudo tee -a /etc/inputrc

বিশদ জন্য, দেখুন man bash। হ্যাঁ এটি একটি দীর্ঘ পৃষ্ঠা, তবে বাশ কিছুটা জটিল প্রোগ্রাম, এবং যদি আপনি কেবল "কেস-সংবেদনশীল" জন্য পৃষ্ঠায় অনুসন্ধান করতে চান তবে প্রাসঙ্গিক বিভাগে যেতে পারেন। লোকেরা সাধারণত একবারে বাশ একটি বিকল্প বা এক বারে একটি ব্যাশ স্ক্রিপ্ট শিখতে থাকে এবং সমস্ত সংক্ষিপ্তসারকে আয়ত্ত করতে এটি অনেক সময় নেয়। আপনার আগ্রহ পৃথক হতে পারে।


ধন্যবাদ। আমি ব্যবহারকারী-নির্দিষ্ট / অ-প্রশাসনিক বন্ধুত্বপূর্ণ সমাধানটির প্রশংসা করি। ইকো লাইনটি কাজ করেছে বলে মনে হয়, তবে এখন মনে হচ্ছে কার্সারটি সরানোর জন্য Ctrl-Left / Right ব্যবহারের ক্ষমতাটি আমি হারিয়ে ফেলেছি। এছাড়াও, >>চেয়ে নিরাপদ হবে >?
mwfearnley

সাধারণভাবে >> নিরাপদ হতে চলেছে, আমার ভুল, আমি ধরে নিছিলাম যে আপনার কাছে ~ / .inputrc নেই। আমি নোক্লোবার = সেটও করেছি) আপনার তীর কীগুলি কেন কাজ করছে না তা নিশ্চিত করুন, আমি এটির অনুলিপি করতে পারি না। আপনি ~ / .inputrc মুছে ফেলতে এবং একটি নতুন শেল শুরু করতে পারেন।
প্যান্থার

হ্যাঁ, আমি এটিকে সরিয়ে দিলে এটি আবার কাজ করে .. লিনাক্সফর্মসক্র্যাচ.আর . / বিএফএলস / ভিউ / ৫.১ / পোস্টস্টলস / ইনপুটসিচ.টিএমএল অনুসারে নতুন ইনপুটক্রটি বিশ্বব্যাপী ওভাররাইড করছে?
mwfearnley

2
পবিত্র ছিঃ, আমি এটিকে / ইত্যাদি / ইনপুটসিপিতে অনুলিপি করেছি এবং আমি "আই" আর টাইপ করতে পারি না এবং যখন আমি "ই" টাইপ করি তখন এটি কনসোলে "এসএসএসএসএসএস [..]" স্প্যাম করে .. @ এমটিইন 4 থেকে আরও ভাল সমাধানটি ব্যবহার করুন
লুকা স্টেব

2
@ লুকাস্টিবি আমি এটিও হিট করেছি তবে তখন বুঝতে পেরেছি যে এই পুরো ব্লকটি আপনার .inputrc এ রাখার কথা নয়, তবে একবার টাইপ করা হয়েছে। কেবলমাত্র $include /etc/inputrcএবং set completion-ignore-case onআপনার in ..inputrc ফাইলে থাকা উচিত।
ক্রিস

49

একটি টার্মিনাল খুলুন এবং নীচের কমান্ডটি টাইপ করুন:

echo set completion-ignore-case on | sudo tee -a /etc/inputrc

পাসওয়ার্ড লিখুন. টার্মিনাল পুনরায় আরম্ভ করুন।

যদি কোনও ক্ষেত্রে আপনি সংবেদনশীল কেস মুছে ফেলতে চান তবে কেবল set completion-ignore-caseলাইনটি সরিয়ে / etc / ইনপুটসি ফাইল সম্পাদনা করুন ।

এখানেই শেষ.


ঠিক আছে, আমি আপনার জন্য এটি স্পষ্ট। বাশ সম্পর্কে শিখতে কিছু সময় সময় লাগে তবে অন্বেষণ, পড়া এবং জিজ্ঞাসা চালিয়ে যান। linuxcommand.org একটি জনপ্রিয় শুরু;)
প্যান্থার

3
যদি একাধিক ব্যবহারকারীর উপস্থিতি থাকে তবে এটি সবার জন্য পরিবর্তন করে, যা পছন্দসই আচরণ হতে পারে বা নাও হতে পারে
ওয়াল্টার ট্রস

2
এখানে এখন পর্যন্ত সবচেয়ে সোজা এগিয়ে ও সরল উত্তর
ওয়ার্কাবাইট

সহজ এবং স্পষ্ট উত্তর
বিকাশকারী

11

আমি জানি এই প্রশ্নটি অনেক পুরানো তবে আমি যদি কিছু মিস না করি তবে আমি মনে করি আপনি বাশ ব্যবহার করছেন যদি আমার কাছে একটি অতি সাধারণ সমাধান রয়েছে।

echo "bind 'set completion-ignore-case on'" >> ~/.bashrc

অথবা আপনার প্রিয় পাঠ্য সম্পাদকটি ব্যবহার করে কেবল লাইন যুক্ত করুন। আপনার বাশ সেশনটি পুনরায় আরম্ভ করুন এবং উপভোগ করুন।


2
ভাল, আপনি কিছু মিস করছেন: ~/.inputrcরিডলাইন দ্বারা পঠিত হয়, যা বাশ এই সমাপ্তিটি সরবরাহ করতে ব্যবহার করে। রিডলাইনটি অন্যান্য প্রোগ্রামগুলিও ব্যবহার করে, সুতরাং সাধারণত এটি সেট করার জন্য, ~/.inputrcপ্রস্তাবিত হিসাবে গৃহীত উত্তরটি আরও ভাল হবে।
মুড়ু

আপনার পরামর্শের জন্য ধন্যবাদ, এটি আমাকে আরও কিছু শেখায়, তবে আমার বলতে হবে যে আমি যেটি গ্রহণ করেছি তার চেয়ে সহজ মনে হয় না, যা নতুন ফাইলটি পুরানোটি বাতিল করে না তা নিশ্চিত করার জন্য একটি অতিরিক্ত লাইন ব্যবহার করে।
mwfearnley

পারফেক্ট। তবে মনে রাখতে হবে কেবলমাত্র একমাত্র bind 'set completion-ignore-case on'নতুন লাইনে যাওয়া উচিত.bashrc
বিশ্রান্ত

3

আপনি এটি GNU রিডলাইনের জন্য একটি কনফিগারেশন ভেরিয়েবল সেট করে এটি করতে পারেন যা ইন্টারেক্টিভ শেলের ইনপুট পরিচালনা করে।

প্রয়োজনীয় পরিবর্তনশীলটি হ'ল completion-ignore-caseএবং এটি সরাসরি আপনার বাশ সেশনে সেট করা যেতে পারে:

bind "set completion-ignore-case on"

এটি ব্যবহারকারীর ~/.inputrcফাইল বা সিস্টেমে /etc/inputrcসমস্ত ব্যবহারকারীর জন্য সক্ষম করার জন্য এটি ভবিষ্যতের সমস্ত বাশ সেশনের জন্য সক্ষম করা যেতে পারে । এটি পঠনের জন্য আরম্ভের ফাইল।

তবে মনে রাখবেন যে আপনি যদি তৈরি করেন তবে এটি সিস্টেম অনুলিপিটিকে ওভাররাইড~/.inputrc করবে । (আমার জন্য এটি আমার জন্য কিছু কী ম্যাপিংগুলি হারাতে পেরেছিল, যেমন / । আপনি ফাইলটি ব্যবহার করে কোনটি দেখতে পারেন )) এই সমস্যাটি সমাধানের উপায়টি লাইনটির শীর্ষে রাখা , যেমন:Ctrl-LeftRight/etc/inputrc
$include /etc/inputrc~/.inputrc

$include /etc/inputrc

set completion-ignore-case on

পরিবর্তনগুলি প্রয়োগ করার জন্য, ব্যাশ পুনর্সূচনা বা inputrc রিলোড দিয়ে যেমন, Ctrl+x, Ctrl+r

রিডলাইন এবং ইনপুটকিআর সম্পর্কে আরও তথ্য পাওয়া যাবে man bashএবং man 3 readline

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