শেল স্ক্রিপ্টিং লিনাক্সে প্রক্রিয়া অটোমেশনের একটি গুরুত্বপূর্ণ অংশ। স্ক্রিপ্টিং আপনাকে একটি ফাইলে কমান্ডের একটি ক্রম লিখতে এবং তারপরে সেগুলি কার্যকর করতে সহায়তা করে।
এটি আপনার সময় বাঁচায় কারণ আপনাকে নির্দিষ্ট কমান্ড বারবার লিখতে হবে না। আপনি দৈনন্দিন কাজগুলি দক্ষতার সাথে সম্পাদন করতে পারেন এবং এমনকি স্বয়ংক্রিয়ভাবে সম্পাদনের জন্য তাদের সময়সূচী করতে পারেন৷
আপনি স্টার্টআপে চালানোর জন্য নির্দিষ্ট স্ক্রিপ্টগুলিও সেট করতে পারেন যেমন একটি নতুন সেশন চালু করার সময় একটি নির্দিষ্ট বার্তা দেখানো বা নির্দিষ্ট পরিবেশের ভেরিয়েবল সেট করা।
স্ক্রিপ্টিংয়ের অ্যাপ্লিকেশন এবং ব্যবহারগুলি অসংখ্য, তাই আসুন এতে ডুব দেওয়া যাক।
এই নিবন্ধে, আপনি শিখবেন:
- ব্যাশ শেল কি?
- ব্যাশ স্ক্রিপ্ট কী এবং আপনি কীভাবে এটি সনাক্ত করবেন?
- কিভাবে আপনার প্রথম ব্যাশ স্ক্রিপ্ট তৈরি করবেন এবং এটি কার্যকর করবেন।
- শেল স্ক্রিপ্টিংয়ের মৌলিক সিনট্যাক্স।
- কিভাবে একটি সিস্টেমের নির্ধারিত স্ক্রিপ্ট দেখতে হয়।
- ক্রন কাজের মাধ্যমে সময়সূচী করে কীভাবে স্ক্রিপ্টগুলি স্বয়ংক্রিয় করা যায়।
শেখার সর্বোত্তম উপায় হল অনুশীলন করা। আমি আপনাকে রিপ্লিট ব্যবহার করে অনুসরণ করার জন্য অত্যন্ত উৎসাহিত করি। আপনি মিনিটের মধ্যে একটি চলমান লিনাক্স শেল অ্যাক্সেস করতে পারেন৷
ব্যাশ শেল পরিচিতি
লিনাক্স কমান্ড লাইন শেল নামক একটি প্রোগ্রাম দ্বারা প্রদান করা হয়। বছরের পর বছর ধরে, শেল প্রোগ্রামটি বিভিন্ন বিকল্পের জন্য বিকশিত হয়েছে।
বিভিন্ন ব্যবহারকারীদের বিভিন্ন শেল ব্যবহার করার জন্য কনফিগার করা যেতে পারে। কিন্তু বেশিরভাগ ব্যবহারকারী বর্তমান ডিফল্ট শেলটির সাথে লেগে থাকতে পছন্দ করে। অনেক লিনাক্স ডিস্ট্রোর ডিফল্ট শেল হল GNU Bourne-Again Shell (bash)। ব্যাশের স্থলাভিষিক্ত হয়েছে বোর্ন শেল (sh
)।
আপনি যখন প্রথম শেল চালু করেন, তখন এটি .bashrc
-এ অবস্থিত একটি স্টার্টআপ স্ক্রিপ্ট ব্যবহার করে অথবা .bash_profile
ফাইল যা আপনাকে শেলের আচরণ কাস্টমাইজ করতে দেয়।
যখন একটি শেল ইন্টারেক্টিভভাবে ব্যবহার করা হয়, তখন এটি একটি $
প্রদর্শন করে যখন এটি ব্যবহারকারীর কাছ থেকে একটি আদেশের জন্য অপেক্ষা করছে। একে শেল প্রম্পট বলা হয়।
[username@host ~]$
শেল রুট হিসাবে চলমান থাকলে, প্রম্পটটি #
এ পরিবর্তিত হয় . সুপার ইউজার শেল প্রম্পটটি এইরকম দেখায়:
[root@host ~]#
ব্যাশ খুবই শক্তিশালী কারণ এটি কিছু ক্রিয়াকলাপকে সহজ করতে পারে যেগুলি একটি GUI এর সাথে দক্ষতার সাথে সম্পন্ন করা কঠিন। মনে রাখবেন যে বেশিরভাগ সার্ভারের একটি GUI নেই, এবং কমান্ড লাইন ইন্টারফেস (CLI) এর ক্ষমতাগুলি ব্যবহার করা শিখতে হবে৷
ব্যাশ স্ক্রিপ্ট কি?
একটি ব্যাশ স্ক্রিপ্ট একটি ফাইলে লিখিত কমান্ডের একটি সিরিজ। এগুলি ব্যাশ প্রোগ্রাম দ্বারা পড়া এবং কার্যকর করা হয়। প্রোগ্রামটি লাইন দ্বারা লাইন নির্বাহ করে।
উদাহরণস্বরূপ, আপনি একটি নির্দিষ্ট পথে নেভিগেট করতে পারেন, একটি ফোল্ডার তৈরি করতে পারেন এবং কমান্ড লাইন ব্যবহার করে এর ভিতরে একটি প্রক্রিয়া তৈরি করতে পারেন।
আপনি একটি bash স্ক্রিপ্টে কমান্ড সংরক্ষণ করে এবং এটি চালানোর মাধ্যমে ধাপগুলির একই ক্রম করতে পারেন। আপনি যে কোনো সংখ্যক বার স্ক্রিপ্ট চালাতে পারেন।
আপনি কিভাবে একটি ব্যাশ স্ক্রিপ্ট সনাক্ত করবেন?
.sh
এর ফাইল এক্সটেনশন .
প্রথার নামকরণের মাধ্যমে, ব্যাশ স্ক্রিপ্ট একটি .sh
দিয়ে শেষ হয় . যাইহোক, ব্যাশ স্ক্রিপ্টগুলি sh
ছাড়াই পুরোপুরি সূক্ষ্মভাবে চলতে পারে এক্সটেনশন
স্ক্রিপ্টগুলি ব্যাশ ব্যাং দিয়ে শুরু হয়৷
স্ক্রিপ্টগুলিকে একটি shebang
দিয়েও চিহ্নিত করা হয় . Shebang হল bash #
এর সংমিশ্রণ এবং bang !
ব্যাশ শেল পথ অনুসরণ করে। এটি স্ক্রিপ্টের প্রথম লাইন। শেবাং শেলকে ব্যাশ শেলের মাধ্যমে এটি কার্যকর করতে বলে। শেবাং হল ব্যাশ ইন্টারপ্রেটারের জন্য একটি পরম পথ।
নীচে শেবাং বিবৃতিটির একটি উদাহরণ।
#! /bin/bash
ব্যাশ প্রোগ্রামের পথ পরিবর্তিত হতে পারে। আমরা পরে দেখব কিভাবে এটি সনাক্ত করা যায়।
সম্পাদনার অধিকার
স্ক্রিপ্টগুলি কার্যকর করার অধিকার রয়েছে ব্যবহারকারীর জন্য।
একটি কার্যকর করার অধিকার x
দ্বারা উপস্থাপিত হয় . নীচের উদাহরণে, আমার ব্যবহারকারীর rwx
আছে test_script.sh
ফাইলের জন্য (পড়ুন, লিখুন, কার্যকর করুন) অধিকার
ফাইলের রঙ
এক্সিকিউটেবল স্ক্রিপ্টগুলি বাকি ফাইল এবং ফোল্ডারগুলির থেকে আলাদা রঙে উপস্থিত হয়৷
৷আমার ক্ষেত্রে, এক্সিকিউশন অধিকার সহ স্ক্রিপ্টগুলি সবুজ হিসাবে উপস্থিত হয়৷
৷কিভাবে আপনার প্রথম ব্যাশ স্ক্রিপ্ট তৈরি করবেন
চলুন ব্যাশে একটি সহজ স্ক্রিপ্ট তৈরি করি যা Hello World
আউটপুট করে .
hello_world.sh নামে একটি ফাইল তৈরি করুন
touch hello_world.sh
আপনার ব্যাশ শেলের পথটি খুঁজুন৷
which bash
আমার ক্ষেত্রে, পথটি হল /usr/bin/bash
এবং আমি এটিকে শেবাং-এ অন্তর্ভুক্ত করব।
কমান্ডটি লিখুন৷
৷
আমরা echo
করব কনসোলে "হ্যালো ওয়ার্ল্ড"।
আমাদের স্ক্রিপ্ট এরকম কিছু দেখাবে:
#! usr/bin/bash
echo "Hello World"
hello_world.sh
ফাইলটি সম্পাদনা করুন আপনার পছন্দের একটি পাঠ্য সম্পাদক ব্যবহার করুন এবং এতে উপরের লাইনগুলি যোগ করুন।
আপনার ব্যবহারকারীকে কার্যকর করার অধিকার প্রদান করুন৷
ফাইলের অনুমতি পরিবর্তন করুন এবং নিচের কমান্ডটি ব্যবহার করে স্ক্রিপ্ট কার্যকর করার অনুমতি দিন:
chmod u+x hello_world.sh
chmod
একটি নির্দিষ্ট ব্যবহারকারীর জন্য একটি ফাইলের বিদ্যমান অধিকার সংশোধন করে। আমরা +x
যোগ করছি ব্যবহারকারী u
কে .
স্ক্রিপ্টটি চালান৷
৷আপনি নিম্নলিখিত উপায়ে স্ক্রিপ্ট চালাতে পারেন:
./hello_world.sh
bash hello_world.sh
.
এখানে আউটপুট:
ব্যাশ স্ক্রিপ্টিংয়ের মৌলিক সিনট্যাক্স
অন্যান্য প্রোগ্রামিং ভাষার মতোই, ব্যাশ স্ক্রিপ্টিং কম্পিউটার দ্বারা বোধগম্য প্রোগ্রাম তৈরি করার জন্য কিছু নিয়ম অনুসরণ করে। এই বিভাগে, আমরা ব্যাশ স্ক্রিপ্টিংয়ের সিনট্যাক্স অধ্যয়ন করব।
ভেরিয়েবল কিভাবে সংজ্ঞায়িত করতে হয়
আমরা সিনট্যাক্স variable_name=value
ব্যবহার করে একটি ভেরিয়েবলকে সংজ্ঞায়িত করতে পারি . ভেরিয়েবলের মান পেতে, $
যোগ করুন পরিবর্তনশীলের আগে।
#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
টাক্স হল লিনাক্স মাসকটের নাম, পেঙ্গুইন।
অরিথমেটিক এক্সপ্রেশন
নীচে গাণিতিক গণনার জন্য ব্যাশ দ্বারা সমর্থিত অপারেটরগুলি রয়েছে:
অপারেটর | ব্যবহার |
---|---|
+ | সংযোজন |
- | বিয়োগ |
* | গুণ |
/ | বিভাগ |
** | প্রতিফলন |
% | মডুলাস |
আসুন কয়েকটি উদাহরণ চালানো যাক।
নিচের সিনট্যাক্স ব্যবহার করে সংখ্যাসূচক এক্সপ্রেশনগুলিও একটি ভেরিয়েবলে গণনা এবং সংরক্ষণ করা যেতে পারে:
var=$((expression))
আসুন একটি উদাহরণ চেষ্টা করি।
#!/bin/bash
var=$((3+9))
echo $var
উপরের পদ্ধতিগুলি ব্যবহার করে ভগ্নাংশ সঠিকভাবে গণনা করা হয় না এবং কাটা হয়।
দশমিক গণনার জন্য , আমরা bc
ব্যবহার করতে পারি একটি নির্দিষ্ট সংখ্যক দশমিক স্থানে আউটপুট পেতে কমান্ড। bc
(ব্যাশ ক্যালকুলেটর) একটি কমান্ড লাইন ক্যালকুলেটর যা একটি নির্দিষ্ট সংখ্যক দশমিক বিন্দু পর্যন্ত গণনা সমর্থন করে।
echo "scale=2;22/7" | bc
যেখানে scale
আউটপুটে প্রয়োজনীয় দশমিক স্থানের সংখ্যা নির্ধারণ করে।
কিভাবে ব্যবহারকারীর ইনপুট পড়তে হয়
কখনও কখনও আপনাকে ব্যবহারকারীর ইনপুট সংগ্রহ করতে হবে এবং প্রাসঙ্গিক ক্রিয়াকলাপ সম্পাদন করতে হবে।
ব্যাশে, আমরা read
ব্যবহার করে ব্যবহারকারীর ইনপুট নিতে পারি আদেশ৷
read variable_name
একটি কাস্টম বার্তা সহ ব্যবহারকারীকে অনুরোধ করতে, -p
ব্যবহার করুন পতাকা।
read -p "Enter your age" variable_name
উদাহরণ:
#!/bin/bash
echo "Enter a numner"
read a
echo "Enter a numner"
read b
var=$((a+b))
echo $var
সংখ্যার তুলনা লজিক্যাল অপারেটর
বিবৃতি true
মূল্যায়ন করে কিনা তা পরীক্ষা করতে তুলনা ব্যবহার করা হয় অথবা false
. দুটি বিবৃতি তুলনা করার জন্য আমরা নীচের দেখানো অপারেটর ব্যবহার করতে পারি:
অপারেশন | সিনট্যাক্স | ব্যাখ্যা |
---|---|---|
সমতা | num1 -eq num2 | num1 হল num2 এর সমান |
এর সমানের চেয়ে বড় | num1 -ge num2 | num1 এর সমান num2 এর চেয়ে বড় |
এর চেয়ে বড় | num1 -gt num2 | num1 num2 এর চেয়ে বড় |
সমান থেকে কম | num1 -le num2 | num1 সমান num2 এর চেয়ে কম |
এর চেয়ে কম | num1 -lt num2 | num2 থেকে num1 কম |
এর সমান নয় | num1 -ne num2 | num1 num2 এর সমান নয় |
সিনট্যাক্স :
if [ conditions ]
then
commands
fi
উদাহরণ :
আসুন দুটি সংখ্যার তুলনা করি এবং তাদের সম্পর্ক খুঁজে বের করি:
read x
read y
if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi
আউটপুট:
শর্তাধীন বিবৃতি (সিদ্ধান্ত গ্রহণ)
শর্ত হল অভিব্যক্তি যা একটি বুলিয়ান এক্সপ্রেশনের (true
) মূল্যায়ন করে অথবা false
) শর্ত পরীক্ষা করতে, আমরা if
ব্যবহার করতে পারি , if-else
, if-elif-else
এবং নেস্টেড শর্তাবলী।
শর্তসাপেক্ষ বিবৃতিগুলির গঠন নিম্নরূপ:
if...then...fi
বিবৃতিif...then...else...fi
বিবৃতিif..elif..else..fi
if..then..else..if..then..fi..fi..
(নেস্টেড শর্তাবলী)
সিনট্যাক্স :
if [[ condition ]]
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
অর্থপূর্ণ তুলনা তৈরি করতে, আমরা AND -a
ব্যবহার করতে পারি এবং OR -o
সেইসাথে।
নিচের বিবৃতিটি এতে অনুবাদ করে:যদি a
40 এর বেশি এবং b
6 এর কম।
if [ $a -gt 40 -a $b -lt 6 ]
উদাহরণ :চলুন এর বাহুর দৈর্ঘ্য পড়ে ত্রিভুজের ধরন বের করি।
read a
read b
read c
if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL
elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE
fi
আউটপুট :
টেস্ট কেস #1
টেস্ট কেস #2
টেস্ট কেস #3
লুপিং এবং এড়িয়ে যাওয়া
৷লুপগুলির জন্য আপনাকে নির্দিষ্ট সংখ্যক বার বিবৃতি কার্যকর করতে দেয়।
সংখ্যা দিয়ে লুপ করা:
নীচের উদাহরণে, লুপটি 5 বার পুনরাবৃত্তি করবে।
#!/bin/bash
for i in {1..5}
do
echo $i
done
স্ট্রিং দিয়ে লুপ করা:
আমরা স্ট্রিং এর মাধ্যমেও লুপ করতে পারি।
#!/bin/bash
for X in cyan magenta yellow
do
echo $X
done
While loop
লুপ করার সময় একটি শর্তের জন্য চেক করুন এবং শর্তটি true
থাকা পর্যন্ত লুপ করুন . আমাদের একটি পাল্টা বিবৃতি প্রদান করতে হবে যা লুপ এক্সিকিউশন নিয়ন্ত্রণ করতে কাউন্টারকে বৃদ্ধি করে।
নীচের উদাহরণে, (( i += 1 ))
কাউন্টার স্টেটমেন্ট যা i
এর মান বৃদ্ধি করে .
উদাহরণ:
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
ফাইল পড়া
ধরুন আমাদের একটি sample_file.txt
ফাইল আছে নীচে দেখানো হিসাবে:
আমরা লাইনে ফাইল লাইন পড়তে পারি এবং স্ক্রিনে আউটপুট প্রিন্ট করতে পারি।
#!/bin/bash
LINE=1
while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "sample_file.txt"
আউটপুট:
ব্যাক টিক দিয়ে কিভাবে কমান্ড এক্সিকিউট করবেন
আপনি যদি আপনার স্ক্রিপ্টে একটি জটিল কমান্ডের আউটপুট অন্তর্ভুক্ত করতে চান তবে আপনি ব্যাক টিকগুলির ভিতরে বিবৃতিটি লিখতে পারেন৷
সিনট্যাক্স:
var =` commands
`
উদাহরণ :ধরুন আমরা tmpfs
সহ মাউন্টপয়েন্টগুলির একটি তালিকার আউটপুট পেতে চাই তাদের নামে। আমরা এভাবে একটি বিবৃতি তৈরি করতে পারি:df -h | grep tmpfs
.
এটিকে ব্যাশ স্ক্রিপ্টে অন্তর্ভুক্ত করতে, আমরা এটিকে ব্যাক টিকগুলিতে আবদ্ধ করতে পারি।
#!/bin/bash
var=`df -h | grep tmpfs`
echo $var
আউটপুট:
কমান্ড লাইন থেকে স্ক্রিপ্টের জন্য আর্গুমেন্ট কিভাবে পেতে হয়
মৃত্যুদন্ড কার্যকর করার বিষয়ে স্ক্রিপ্টে আর্গুমেন্ট দেওয়া সম্ভব।
$@
একটি থেকে শুরু করে প্যারামিটারের অবস্থানকে উপস্থাপন করে।
#!/bin/bash
for x in $@
do
echo "Entered arg is $x"
done
এটিকে এভাবে চালান:
./script arg1 arg2
ক্রন কাজের মাধ্যমে সময়সূচী করে স্ক্রিপ্টগুলি কীভাবে স্বয়ংক্রিয় করা যায়
ক্রন হল একটি কাজের সময় নির্ধারণ ইউটিলিটি যা ইউনিক্সের মতো সিস্টেমে উপস্থিত রয়েছে। আপনি দৈনিক, সাপ্তাহিক, মাসিক বা দিনের একটি নির্দিষ্ট সময়ে কার্যকর করার জন্য কাজের সময় নির্ধারণ করতে পারেন। লিনাক্সে অটোমেশন ক্রোন কাজের উপর অনেক বেশি নির্ভর করে।
নিচে সিনট্যাক্স করা হল ক্রন নির্ধারণ করার জন্য:
# Cron job example
* * * * * sh /path/to/script.sh
এখানে, *
প্রতিনিধিত্ব করে যথাক্রমে মিনিট(গুলি) ঘন্টা(গুলি) দিন(গুলি) মাস(গুলি) সপ্তাহের দিন(গুলি),।
নীচে ক্রন কাজের সময় নির্ধারণের কিছু উদাহরণ রয়েছে৷
৷শিডিউল | শিডিউল করা মান |
---|---|
5 0 * 8 * | আগস্টে 00:05 এ। |
5 4 * * 6 | রবিবার 04:05 এ। |
0 22 * * 1-5 | সোমবার থেকে শুক্রবার পর্যন্ত সপ্তাহের প্রতিদিন 22:00 এ। |
আপনি এই ব্লগ পোস্টে ক্রোন সম্পর্কে বিস্তারিত জানতে পারবেন।
কিভাবে একটি সিস্টেমে বিদ্যমান স্ক্রিপ্টগুলি পরীক্ষা করবেন
ক্রোন্টাব ব্যবহার করা হচ্ছে
crontab -l
একটি নির্দিষ্ট ব্যবহারকারীর জন্য ইতিমধ্যে নির্ধারিত স্ক্রিপ্ট তালিকাভুক্ত করে।
ফাইন্ড কমান্ড ব্যবহার করা
find
কমান্ড নির্দিষ্ট নিদর্শনগুলির উপর ভিত্তি করে ফাইলগুলি সনাক্ত করতে সহায়তা করে। যেহেতু বেশিরভাগ স্ক্রিপ্ট .sh
দিয়ে শেষ হয় , আমরা ফাইন্ড স্ক্রিপ্টটি এভাবে ব্যবহার করতে পারি:
find . -type f -name "*.sh"
কোথায়,
.
বর্তমান ডিরেক্টরি প্রতিনিধিত্ব করে। আপনি সেই অনুযায়ী পথ পরিবর্তন করতে পারেন।-type f
ইঙ্গিত করে যে আমরা যে ফাইলের ধরণটি খুঁজছি তা একটি পাঠ্য ভিত্তিক ফাইল৷
৷ *.sh
.sh
দিয়ে শেষ হওয়া সমস্ত ফাইলের সাথে মেলাতে বলে .
আপনি যদি বিস্তারিতভাবে ফাইন্ড কমান্ডটি পড়তে আগ্রহী হন তবে আমার অন্য পোস্টটি দেখুন।
র্যাপিং আপ
এই টিউটোরিয়ালে আমরা শেল স্ক্রিপ্টিংয়ের প্রাথমিক বিষয়গুলো শিখেছি। আমরা উদাহরণ এবং সিনট্যাক্স দেখেছি যা আমাদের অর্থপূর্ণ প্রোগ্রাম লিখতে সাহায্য করতে পারে।
এই টিউটোরিয়াল থেকে আপনি আপনার প্রিয় জিনিস কি শিখেছেন? আমাকে টুইটারে জানান!
আপনি এখানে আমার অন্যান্য পোস্ট পড়তে পারেন.
ম্যাক্রোভেক্টর দ্বারা তৈরি কাজের ভেক্টর - www.freepik.com