একটি শেল চার ধরণের কমান্ড জানে।
- উপাধি: এগুলি হ'ল কিছু বিকল্প সহ একটি আদেশের ডাক নাম। এগুলি শেলের প্রারম্ভিকরণ ফাইলে সংজ্ঞায়িত করা হয় (
~/.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 মেনে চলতে হবে না।