লিনাক্সে, শেল স্ক্রিপ্ট আমাদের অনেক ভিন্নভাবে সাহায্য করে যার মধ্যে নির্দিষ্ট সিস্টেম অ্যাডমিনিস্ট্রেশন টাস্ক সম্পাদন বা অটোমেট করা, সিম্পল কমান্ড লাইন টুলস তৈরি করা এবং আরও অনেক কিছু রয়েছে।
এই গাইডে, আমরা নতুন লিনাক্স ব্যবহারকারীদের দেখাব কোথায় বিশ্বস্তভাবে শেল স্ক্রিপ্ট সংরক্ষণ করতে হয়, কীভাবে কাস্টম শেল ফাংশন এবং লাইব্রেরি লিখতে হয়, অন্যান্য স্ক্রিপ্টে লাইব্রেরি থেকে ফাংশন ব্যবহার করতে হয়।
শেল স্ক্রিপ্ট কোথায় সংরক্ষণ করতে হয়
আপনার স্ক্রিপ্টগুলো ফুল/অবсолют পাথ টাইপ না করে চালাতে হলে, সেগুলো $PATH এনভায়রনমেন্ট ভেরিয়েবলের ডিরেক্টরিগুলোর একটিতে সংরক্ষিত থাকতে হবে।
আপনার $PATH চেক করতে নিচের কমান্ড ইস্যু করুন:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
সাধারণত, যদি একটি ব্যবহারকারীর হোম ডিরেক্টরিতে bin ডিরেক্টরি থাকে, তবে এটি স্বয়ংক্রিয়ভাবে তার/তার $PATH-এ অন্তর্ভুক্ত হয়। আপনি আপনার শেল স্ক্রিপ্ট এখানে সংরক্ষণ করতে পারেন।
তাই bin ডিরেক্টরি তৈরি করুন (যেটি Perl, Awk বা Python স্ক্রিপ্ট বা অন্য কোনো প্রোগ্রামও সংরক্ষণ করতে পারে):
$ mkdir ~/bin
এরপর lib (লাইব্রেরির সংক্ষিপ্ত) নামে একটি ডিরেক্টরি তৈরি করুন যেখানে আপনি আপনার নিজের লাইব্রেরিগুলো রাখবেন। আপনি এখানে C, Python এবং অন্যান্য ল্যাঙ্গুয়েজের লাইব্রেরিও রাখতে পারেন। এর নিচে sh নামে আরেকটি ডিরেক্টরি তৈরি করুন; এটি đặcচ করে আপনার শেল লাইব্রেরি সংরক্ষণ করবে:
$ mkdir -p ~/lib/sh
নিজের শেল ফাংশন এবং লাইব্রেরি তৈরি করা
একটি শেল ফাংশন হল কমান্ডের একটি গ্রুপ যা একটি স্ক্রিপ্টে একটি বিশেষ টাস্ক পারফর্ম করে। তারা অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজের প্রসিডিউর, সাবরুটিন এবং ফাংশনের মতোই কাজ করে।
ফাংশন লেখার সিনট্যাক্স:
function_name() { list of commands } উদাহরণস্বরূপ, আপনি একটি স্ক্রিপ্টে date দেখানোর জন্য একটি ফাংশন লিখতে পারেন:
showDATE() {date;} প্রতিবার আপনি date দেখাতে চাইলে, সিস্টেমের নাম দিয়ে ফাংশনটি আহ্বান করুন:
$ showDATE
একটি শেল লাইব্রেরি কেবল একটি শেল স্ক্রিপ্ট, তবে আপনি একটি লাইব্রেরি লিখতে পারেন শুধু আপনার ফাংশনগুলো সংরক্ষণ করতে যাতে পরবর্তীতে অন্য শেল স্ক্রিপ্ট থেকে সেগুলো কল করা যায়।
নিচে একটি লাইব্রেরির উদাহরণ দেওয়া হলো libMYFUNCS.sh নামের যা আমার ~/lib/sh ডিরেক্টরিতে রয়েছে আরও ফাংশন উদাহরণসহ:
#!/bin/bash #Function to clearly list directories in PATH showPATH() { oldifs="$IFS" #store old internal field separator IFS=: #specify a new internal field separator for DIR in $PATH ; do echo $DIR ; done IFS="$oldifs" #restore old internal field separator } #Function to show logged user showUSERS() { echo -e “Below are the user logged on the system:\n” w } #Print a user’s details printUSERDETS() { oldifs="$IFS" #store old internal field separator IFS=: #specify a new internal field separator read -p "Enter user name to be searched:" uname #read username echo "" #read and store from a here string values into variables using : as a field delimiter read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep "^$uname")" #print out captured values echo -e "Username is : $username\n" echo -e "User's ID : $uid\n" echo -e "User's GID : $gid\n" echo -e "User's Comments : $comments\n" echo -e "User's Home Dir : $homedir\n" echo -e "User's Shell : $shell\n" IFS="$oldifs" #store old internal field separator } ফাইলটি সংরক্ষণ করুন এবং স্ক্রিপ্টটি এক্সিকিউটেবল করুন।
লাইব্রেরি থেকে ফাংশন আহ্বান করা
একটি lib-এ ফাংশন ব্যবহার করতে, আপনাকে প্রথমে lib-টিকে শেল স্ক্রিপ্টে ইনক্লুড করতে হবে যেখানে ফাংশনটি ব্যবহার হবে, নিচের রূপে:
$ ./path/to/lib OR $ source /path/to/lib
তাই আপনি লিব ~/lib/sh/libMYFUNCS.sh থেকে ফাংশন printUSERDETS অন্য একটি স্ক্রিপ্টে নিচের মত ব্যবহার করবেন।
আপনাকে এই স্ক্রিপ্টে কোনো অন্য কোড লিখতে হবে না কোনো নির্দিষ্ট ব্যবহারকারীর ডিটেইল প্রিন্ট করতে, শুধু একটি বিদ্যমান ফাংশন কল করুন।
test.sh নামে একটি নতুন ফাইল খুলুন:
#!/bin/bash #include lib . ~/lib/sh/libMYFUNCS.sh #use function from lib printUSERDETS #exit script exit 0
সংরক্ষণ করুন, তারপর স্ক্রিপ্টটি এক্সিকিউটেবল করুন এবং রান করুন:
$ chmod 755 test.sh $ ./test.sh
এই আর্টিকেলে, আমরা আপনাকে দেখিয়েছি কোথায় বিশ্বস্তভাবে শেল স্ক্রিপ্ট সংরক্ষণ করতে হয়, কীভাবে নিজের শেল ফাংশন এবং লাইব্রেরি লিখতে হয়, সাধারণ শেল স্ক্রিপ্টে লাইব্রেরি থেকে ফাংশন আহ্বান করতে হয়।
পরবর্তীতে, আমরা Vim-কে IDE হিসেবে কনফিগার করার একটি সহজ পদ্ধতি ব্যাখ্যা করব বাশ স্ক্রিপ্টিং-এর জন্য। তখন পর্যন্ত, সর্বদা TecMint-এর সাথে যুক্ত থাকুন এবং এই গাইড সম্পর্কে আপনার মতামত ফিডব্যাক ফর্মের মাধ্যমে শেয়ার করুন।