কখনও কখনও আমি একটি ফাংশন সংজ্ঞায়িত করি যা একটি এক্সিকিউটেবলের ছায়া দেয় এবং তার যুক্তি বা আউটপুটটিকে টুইট করে। সুতরাং ফাংশনটির এক্সিকিউটেবলের একই নাম রয়েছে এবং ফাংশনটিকে পুনরাবৃত্তি না বলে ফাংশন থেকে এক্সিকিউটেবলকে কীভাবে চালানো যায় তার একটি উপায় আমার প্রয়োজন। উদাহরণস্বরূপ, এর fossil diff
মাধ্যমে আউটপুট স্বয়ংক্রিয়ভাবে চালাতে colordiff
এবং less -R
আমি ব্যবহার করি:
function fossil () {
local EX=$(which fossil)
if [ -z "$EX" ] ; then
echo "Unable to find 'fossil' executable." >&2
return 1
fi
if [ -t 1 ] && [ "$1" == "diff" ] ; then
"$EX" "$@" | colordiff | less -R
return
fi
"$EX" "$@"
}
যদি আমি এক্সিকিউটেবলের অবস্থান সম্পর্কে নিশ্চিত হই তবে আমি কেবল টাইপ করতে পারি /usr/bin/fossil
। বাশ চিনতে পারে তার /
মানে কমান্ড এটি একটি এক্সিকিউটেবল, ফাংশন নয়। তবে যেহেতু আমি সঠিক অবস্থানটি জানি না, তাই আমাকে কল করতে which
এবং ফলাফলটি পরীক্ষা করতে হবে। একটি সহজ উপায় আছে কি?
/
অর্থ হ'ল কমান্ড একটি কার্যকর নয়, কোনও ফাংশন নয়।" কড়া কথা বলতে গেলে, এটি সত্য নয়। আমি যেটিকে একটি ভয়ঙ্কর (এবং অনির্ধারিত) ডিজাইন সিদ্ধান্ত বলে বিশ্বাস করি তাতে বাশ ফাংশন নামগুলিকে স্ল্যাশ ধারণ করতে দেয়। স্ল্যাশ কেবল কারণ/usr/bin/fossil
একটি আলাদা হতে স্ট্রিং থেকেfossil
, তাই, যখন আপনি বলে/usr/bin/fossil
, এটা চালানোর চেষ্টা করে নাfossil
ফাংশন।