একটি শেল চার ধরণের কমান্ড জানে।
- উপাধি: এগুলি হ'ল কিছু বিকল্প সহ একটি আদেশের ডাক নাম। এগুলি শেলের প্রারম্ভিকরণ ফাইলে সংজ্ঞায়িত করা হয় (
~/.bashrc ব্যাশের জন্য) ।
- কার্যাদি: এগুলি একটি নাম দেওয়া শেল কোডের স্নিপেট। এলিয়াসগুলির মতো সেগুলি শেলের প্রারম্ভিককরণের ফাইলে সংজ্ঞায়িত করা হয়।
- বিল্টিনস: শেলটি সংখ্যক অন্তর্নির্মিত কমান্ডের সাথে আসে। সর্বাধিক বিল্টিন শেল স্থিতি পরিচালনা করে (
cdবর্তমান ডিরেক্টরি পরিবর্তন করে,set বিকল্পসমূহ এবং অবস্থানগত পরামিতি exportপরিবর্তন করে, পরিবেশ পরিবর্তন করে ...)। বেশিরভাগ শেল বেশিরভাগ ক্ষেত্রে একই বিল্টিনগুলি সরবরাহ করে তবে প্রতিটি শেলের বেসিক সেটে কয়েকটি এক্সটেনশন রয়েছে।
- বাহ্যিক আদেশ: তারা শেল থেকে স্বতন্ত্র। অন্যান্য প্রোগ্রামগুলির মতো, শেলটি এক্সিকিউটেবল অনুসন্ধানের পথে অনুসন্ধান করে বাহ্যিক প্রোগ্রামগুলি সম্পাদন করে ।
PATHএনভায়রনমেন্ট ভেরিয়েবল প্রোগ্রামের জন্য অনুসন্ধান করতে ডিরেক্টরি একটি কোলন বিচ্ছিন্ন তালিকা-ধারণ করে।
একই নামের সাথে একাধিক প্রকারের কমান্ড থাকলে, উপরের ক্রমের প্রথম ম্যাচটি কার্যকর হয় ¹
একটি নাম চলমান দ্বারা কমান্ডের প্রকারটি আপনি দেখতে পারেন type some_name ।
আপনি চালনা করে এলিয়াস তালিকা করতে পারেন alias কোনও যুক্তি ছাড়াই অন্তর্নির্মিত । ফাংশন বা বিল্টিনগুলি তালিকাভুক্ত করার কোনও উপায় নেই যা সমস্ত শেলগুলিতে কাজ করে। আপনি শেলের ডকুমেন্টেশনে বিল্টিনগুলির একটি তালিকা পেতে পারেন।
setব্যাশে , বিল্টিনগুলি তাদের সংজ্ঞা পাশাপাশি ভেরিয়েবলগুলির সাথে ফাংশন তালিকাভুক্ত করে। ব্যাশ, ksh বা zsh এ, typeset -fতাদের সংজ্ঞাগুলি সহ ফাংশন তালিকাভুক্ত করে। ব্যাশে, আপনি যে কোনও প্রকারের সমস্ত কমান্ডের নাম তালিকাভুক্ত করতে পারেন compgen -c। আপনি ব্যবহার করতে পারেন compgen -A alias, compgen -A builtin compgen -A functionএকটি নির্দিষ্ট ধরনের একটি তালিকা কমান্ড করতে। compgenসেই উপসর্গ দিয়ে শুরু হওয়া কমান্ডের তালিকা তৈরি করতে আপনি অতিরিক্ত স্ট্রিং পাস করতে পারেন ।
Zsh, আপনি সঙ্গে একটি প্রদত্ত ধরনের বর্তমানে উপলব্ধ কমান্ড তালিকাবদ্ধ করতে পারেন echo ${(k)aliases}, echo ${(k)functions}, echo ${(k)builtins}এবংecho ${(k)commands} (শুধুমাত্র যে গত এক তালিকা বহিরাগত কমান্ড)।
নিম্নলিখিত শেল-অগ্নিস্টিক স্নিপেট সমস্ত উপলব্ধ বাইরের প্রোগ্রামের তালিকা করে:
case "$PATH" in
(*[!:]:) PATH="$PATH:" ;;
esac
set -f; IFS=:
for dir in $PATH; do
set +f
[ -z "$dir" ] && dir="."
for file in "$dir"/*; do
if [ -x "$file" ] && ! [ -d "$file" ]; then
printf '%s = %s\n' "${file##*/}" "$file"
fi
done
done
বাশ: হ্যাশ কমান্ডে একটি প্রান্তের মামলা রয়েছে।
বাশ রেফারেন্স ম্যানুয়াল বলেছেন:
হ্যাশ টেবিলের মধ্যে কমান্ডটি পাওয়া না গেলেই $ PATH- র ডিরেক্টরিগুলির সম্পূর্ণ অনুসন্ধান করা হয়
চেষ্টা করুন:
set -h
mkdir ~/dir-for-wat-command
echo 'echo WAT!' >~/dir-for-wat-command/wat
chmod +x ~/dir-for-wat-command/wat
hash -p ~/dir-for-wat-command/wat wat
wat
PATHএনভায়রনমেন্ট ভেরিয়েবল ধারণ করে না ~/dir-for-wat-command, compgen -cপ্রদর্শন করা হয় না wat, কিন্তু আপনি চালাতে পারেন wat।
আপনি যদি কোনও বিদ্যমান কমান্ডকে ছায়া দিতে চান তবে একটি নাম বা একটি ফাংশন নির্ধারণ করুন ।
¹ ব্যতিক্রম: কয়েক builtins (যাকে বলা হয় বিশেষ builtins ) একটি ফাংশন দ্বারা ছায়াবৃত্ত করা যাবে না - ব্যাশ এবং zsh তাদের ডিফল্ট মোড যদিও যে বিন্দুতে POSIX মেনে চলতে হবে না।