আমি অক্ষর টাইপ করার চেয়ে ট্যাব সমাপ্তি বেশি ব্যবহার করি। আমি টাইপ করতাম rm ~/De<TAB>এবং এটি সম্পূর্ণ হয়ে rm ~/Desktop/যায় যাতে আমি পরবর্তী স্তরে চালিয়ে যেতে পারি।
সম্প্রতি, সেই আচরণ বদলেছে। সমাপ্তিটি এখন ফলন দেয় rm ~/Desktop<SPACE>যার অর্থ আমি অবিরত রাখতে চাইলে আমাকে অবশ্যই ব্যাকস্পেস এবং স্ল্যাশ টাইপ করতে হবে। এটি আমাকে কাঁদিয়ে তোলে।
পরিবর্তনগুলি ফাংশনে অবস্থিত হবে বলে মনে হচ্ছে _longopt()এ /etc/bash_completionতবে যে যতটা আমি অনুসরণ করতে পারেন হয়। এই পরিবর্তনটি কি ইচ্ছাকৃত, এবং যদি তাই হয় তবে এটি কীসের পক্ষে ভাল? আমি কি অন্য কোনও সিস্টেম থেকে পুরানো কোডটি কেবল অনুলিপি না করে একটি কনফিগার বিকল্প দ্বারা পুরানো আচরণটি ফিরে পেতে পারি?
সম্পাদনা: রেফারেন্সের জন্য ফাংশন।
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
_longopt()ফাংশন বডি পোস্ট করতে পারেন ?
readlineসেটিংসের উপর নির্ভর করে (আপনার কাছে কোনও ~/inputrcফাইল আছে?) এবং আইটেমটি একটি সত্য ডিরেক্টরি বা ডিরেক্টরিতে একটি সিমলিংক।
.inputrcএই সিস্টেমে আমার আর নেই। (সেই দিনগুলি ছিল, ব্যাকস্পেস এবং কার্সার কীগুলি ঠিক করা ...) এবং এটি সমস্ত উপাদান, ডিরেক্টরি বা ফাইল, সিমলিংক বা না-এর ক্ষেত্রে ঘটে।
rmdir, এর জন্যmkdirবা নয়touch।