আমি ব্যাশ সমাপ্তির স্ক্রিপ্ট সেট আপ করার চেষ্টা করছি এবং কিছুটা সমস্যা হচ্ছে।
আমি এটি সেট আপ করতে চাই যাতে তালিকাভুক্ত পরিপূর্ণতাগুলি হয় কোনও নির্দিষ্ট এক্সটেনশনের সাথে মিলে যাওয়া ফাইলগুলি, বা ডিরেক্টরিগুলি (এতে সেই এক্সটেনশনের ফাইলগুলি থাকতে পারে এবং নাও থাকতে পারে)।
আমার যে সমস্যাটি হচ্ছে তা হ'ল ফাইল এবং ডিরেক্টরিগুলি অন্তর্ভুক্ত করার একমাত্র উপায়টি হ'ল এই জাতীয় কিছু ব্যবহার করে -o plusdirs -f -X '!*.txt'
, তবে যখন আমি বাশকে ডিরেক্টরিগুলির মধ্যে একটি সম্পূর্ণ করতে দেই, এটি কেবল শেষের চেয়ে একটি স্থান যুক্ত করে দেয় স্ল্যাশ।
_xyz()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
#COMPREPLY=( $( compgen -f -X '!*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -f -G '*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -o filenames -f -X '!*.txt' -- $cur ) )
#COMPREPLY=( $( compgen -o dirnames -f -X '!*.txt' -- $cur ) )
COMPREPLY=( $( compgen -o plusdirs -f -X '!*.txt' -- $cur ) )
return 0
}
complete -F _xyz xyz
আমি সমস্ত মন্তব্য-আউট লাইন খুব চেষ্টা করেছি, কিন্তু তারা ডিরেক্টরিগুলি প্রসারিত করে না।
পরীক্ষার জন্য, আমি এটি একটি .txt ফাইল এবং একটি ডিরেক্টরি "দির" দিয়ে একটি ডিরেক্টরিতে চালিয়ে যাচ্ছি (এটির ভিতরে একটি টেক্সট ফাইল সহ, যদিও এটি এখনও কোনও বিষয় নয়)। xyz <TAB>
এই ফাংশনটির সাথে টাইপ করা ডিরেক্টরি এবং .txt ফাইল তালিকাভুক্ত করে তবে টাইপিং xyz d<TAB>
প্রসারিত হয় xyz dir
(ভাল, "dir" পরে একটি স্থান সহ)।