ব্যবহার type commandname
। commandname
এক্সিকিউটযোগ্য কিছু হ'ল এটির সত্যটি ফিরে আসে : উরফ, ফাংশন, অন্তর্নির্মিত বা বাহ্যিক কমান্ড (সন্ধান করা $PATH
)। বিকল্পভাবে, command commandname
যদি commandname
অন্তর্নির্মিত বা বাহ্যিক কমান্ড (সন্ধান করা হয় $PATH
) হয় যা সত্যটি প্রত্যাশা করে তা ব্যবহার করুন ।
exists () {
type "$1" >/dev/null 2>/dev/null
}
কয়েকটি শ-র ভেরিয়েন্ট রয়েছে (স্পষ্টভাবে পূর্ব- /bin/sh
পসিক্স ; আমি ওএসএফ 1 ≤3.x এর নীচে জানি এবং নেটবসডি-র প্রাথমিক সংস্করণ এবং 20-শতাব্দীর কয়েকটি লিনাক্স বিতরণে পাওয়া অ্যালকুইস্ট শেলের কয়েকটি সংস্করণ সম্পর্কে জানি ) যেখানে type
সর্বদা 0 আসে বা আসে না বিদ্যমান। আমি মনে করি না এই সহস্রাব্দ সহ কোনও সিস্টেম পাঠানো হয়েছে। যদি আপনি তাদের সাথে কখনও মুখোমুখি হন তবে এখানে একটি ফাংশন রয়েছে যা আপনি $PATH
ম্যানুয়ালি অনুসন্ধান করতে ব্যবহার করতে পারেন :
exists () { (
IFS=:
for d in $PATH; do
if test -x "$d/$1"; then return 0; fi
done
return 1
) }
আপনি বিল্ট-ইনগুলি এবং ফাংশনগুলি বাদ দিতে এবং নামটি সন্ধান করতে চাইলে এই ফাংশনটি সাধারণত কার্যকর $PATH
। বেশিরভাগ শাঁসগুলির জন্য এটি অন্তর্নির্মিত রয়েছে command -v
, যদিও এটি পসিক্সের তুলনায় সাম্প্রতিকতম সংযোজন (এখনও পসিক্স হিসাবে alচ্ছিক: 2004)। এটি মূলত এটির একটি প্রোগ্রামার-বান্ধব সংস্করণ type
: এটি একটি এক্সিকিউটেবলের জন্য সম্পূর্ণ পাথ $PATH
, বিল্ট-ইন বা ফাংশনের খালি নাম এবং একটি উপাধির জন্য একটি উপাধি সংজ্ঞা দেয়।
exists_in_path () {
case $(command -v -- "$1") in
/*) return 0;;
alias\ *) return 1;; # alias
*) return 1;; # built-in or function
esac
}
Ksh, bash এবং zsh এ type -p
কেবলমাত্র এক্সিকিউটেবলের মধ্যে সন্ধান করতে হবে $PATH
। নোট করুন যে ব্যাশে, রিটার্নের স্ট্যাটাসটি type -p foo
যদি foo
অন্তর্নির্মিত বা ফাংশন হয় তবে 0 হয়; আপনি যদি এক্সিকিউটেবলের জন্য পরীক্ষা করতে চান $PATH
, আপনার আউটপুটটি খালি নয় তা যাচাই করতে হবে। type -p
পসিক্সে নেই; উদাহরণস্বরূপ ডেবিয়ানের ছাই (যা /bin/sh
উবুন্টুতে রয়েছে) এটি নেই।