মন্তব্য করার পরিবর্তে…
complete -f -X '!*.@(zip|udp)' unzip
জন্য সম্পূর্ণ করা উচিত
-f -X '!*.@(zip|udp)'
| | | |||________|
| | | || |
| | | || +- filterpat: zip or udp
| | | |+------------- @ : Matches one of the given patterns
| | | +-------------- *. : Anything+<dot>
| | +---------------- ! : Negate
| +------------------- -X : Filter out matches in "filterpat"
+---------------------- -f : files
অন্য কথায়: সম্পূর্ণ ফাইল এবং মুছে ফেলুন সব শেষ হওয়া না .zipবা .udp।
অতিরিক্ত
আপনি যোগ তাহলে -o defaultসমাপ্তির সম্পন্ন / ম্যাচ হবে সব ফাইল ও ডিরেক্টরিগুলি আছে যদি কোন শেষ হওয়া ফাইল .zipবা .udp।
আপনি যদি সংযোজন যোগ করেন -o plusdirsতবে ফাইলগুলির কোনও ম্যাচ বা শেষ হওয়া ছাড়াও কোনও ডিরেক্টরি যুক্ত করবে ।.zip.udp
বর্তমান
আপনি যখন ব্যবহার করেন complete -p unzipআপনি বর্তমান প্যাটার্ন পান।
আপনার মন্তব্যগুলি থেকে এটি বেশিরভাগই মনে হচ্ছে আপনি নিখুঁত +বা @প্যাটার্নে নিখোঁজ রয়েছেন :
# Err:
complete -f -X '!*.(zip|udp)' unzip
|
+---- Missing + or @
যা অর্থ হবে মেলে যেকোনো ফাইল আক্ষরিক শেষ হওয়া.(zip|udp) । যেমন
touch 'file_test.(zip|udp)'
ম্যানুয়ালটির এই বিভাগটি দেখুন:
এটি সম্ভব যেমন extglobযেমন সক্ষম নয়। এর দ্বারা সক্ষম করুন:
shopt -s extglob
shoptপ্রবেশ করে সমস্ত সেটিংসের বর্তমান অবস্থা পরীক্ষা করুন :
shopt
ক্রিয়া
যদি এর -F somethingঅর্থ হয় এটি পরিপূর্ণতার তালিকা তৈরি করতে কিছু নামের একটি ফাংশন ব্যবহার করে ।
_filedir_xspecসাধারণত ডেবিয়ান ফাংশন। আপনার কাছে এরকম কিছু থাকতে পারে:
$ cat /etc/bash_completion
. /usr/share/bash-completion/bash_completion
যার অর্থ /usr/share/bash-completion/bash_completionসোর্স করা। এখানে আপনি প্রশ্নে ফাংশন পাবেন । আরও কয়েক লাইন নীচে আপনি দেখতে পাবেন যে এই ফাংশন / সমাপ্তি _install_xspecউদাহরণস্বরূপ নামের একটি ফাংশন দ্বারা যুক্ত হয়েছে :
_install_xspec '!*.@(zip|[ejsw]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|do[ct][xm]|p[op]t[mx]|xl[st][xm])' unzip zipinfo
ম্যানুয়াল এন্ট্রি:
মন্তব্য 1 আপডেট করুন:
- অবৈধ সংরক্ষণাগার বা ফাইল অনুমতিগুলির কারণে কোনও মিল নেই।
এটি ফলাফল প্রভাবিত করা উচিত নয়। completeশুধুমাত্র বিধি দ্বারা প্রদত্ত ফাইলগুলির সাথে মেলে এবং ফাইলগুলির কোনও প্রসেসিং করেন না। আপনি যদি তাদের সাথে তালিকাভুক্ত করতে পারেন তবে তাদের lsমিলানো উচিত।
পার্শ্ব নোট হিসাবে একটি সম্পূর্ণ ফাংশন ব্যবহার করে এই জাতীয় কার্যকারিতা যুক্ত করতে পারে :
function _unzip_validated() {
# 1. Generate list of files ending in e.g. .zip and .udp
# 2. Validate each file and remove invalid ones from file list.
}
complete -F _unzip_validated unzip
- রঙ কেন lsপার্থক্য test.zipকরে test.upd?
এটি প্রভাবিত করে না complete। দ্বারা রঙ lsসরবরাহ করা হয় $LS_COLORS। চেষ্টা করুন:
echo "$LS_COLORS" | tr : '\n' | sort
আপনার এমন কিছু দেখতে পাওয়া উচিত *.zip=01;31যার অর্থ:
*.zip=01;31
|____| | |
| | +--- Red
| +------ Bold
+---------- Files with .zip extension
*.udp অন্যদিকে এর সাথে কোনও এন্ট্রি যুক্ত নেই, তাই রঙিন নয়।
পরবর্তী পদক্ষেপ (প্রথম হওয়া উচিত ছিল)
- টার্মিনাল খুলুন এবং পরীক্ষার ফাইল সহ একটি ডিরেক্টরিতে যান। .Zip এবং .udp উভয়ই
- প্রবেশ করান
bash --norc
- প্রবেশ করান
complete -f -X '!*.@(zip|udp)' unzip
- প্রবেশ করান
shopt -s extglob
- প্রবেশ করান
unzip <tab><tab>
ফলাফল?
এছাড়াও, আপনার প্রশ্নের নীচে সম্পাদনা ক্লিক করুন এবং এর আউটপুট যুক্ত করুন:
bind -V
shopt
env
সহায়ক হতে পারে।
complete -p unzipফলন দেয়complete -f -X '!*.@(zip|udp)' unzipএবংunzip <tab>ফাইলটি সম্পূর্ণ করেtest.zip। তবে ডিরেক্টরিতে নামেরtest.updমতো একটি ফাইল রয়েছে যা ট্যাব সমাপ্তির দ্বারা খুঁজে পাওয়া যায় নাunzip। ফাইল অনুমতিগুলির সত্যতা বা ফাইলটির শূন্য দৈর্ঘ্য সম্ভবত এই অদ্ভুত আচরণটি ব্যাখ্যা করে?