মন্তব্য করার পরিবর্তে…
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
। ফাইল অনুমতিগুলির সত্যতা বা ফাইলটির শূন্য দৈর্ঘ্য সম্ভবত এই অদ্ভুত আচরণটি ব্যাখ্যা করে?