লিনাক্সে কীভাবে সহজ শেল স্ক্রিপ্ট তৈরি করবেন


লিনাক্স ব্যবহারকারীদের আঙ্গুলের ডগায় থাকা সবচেয়ে প্রয়োজনীয় দক্ষতার মধ্যে শেল স্ক্রিপ্টগুলি তৈরি করা। শেল স্ক্রিপ্টগুলি পুনরাবৃত্ত কাজগুলি স্বয়ংক্রিয়করণে একটি বিশাল ভূমিকা পালন করে যা অন্যথায় লাইন দ্বারা নির্বাহ করা লাইন ক্লান্তিকর হবে।

এই টিউটোরিয়ালে, আমরা প্রতিটি লিনাক্স ব্যবহারকারীর কিছু বেসিক শেল স্ক্রিপ্টিং ক্রিয়াকলাপ হাইলাইট করি।

1. একটি সাধারণ শেল স্ক্রিপ্ট তৈরি করুন

শেল স্ক্রিপ্ট এমন একটি ফাইল যা ASCII পাঠ্যকে অন্তর্ভুক্ত করে। আমরা একটি সাধারণ শেল স্ক্রিপ্ট তৈরি করে শুরু করব এবং এটি করতে আমরা একটি পাঠ্য সম্পাদক ব্যবহার করব। বেশ কয়েকটি ভিএম এডিটর রয়েছে।

আমরা একটি সাধারণ স্ক্রিপ্ট তৈরি করে শুরু করব যা কার্যকর করা হলে "হ্যালো ওয়ার্ল্ড" প্রদর্শন করে।

$ vim hello.sh

ফাইলটিতে নিম্নলিখিত সামগ্রীটি আটকে দিন এবং সংরক্ষণ করুন।

#!/bin/bash
# Print Hello world message
echo "Hello World!"

আসুন একের পর এক শেল স্ক্রিপ্ট লাইন দিয়ে যাই।

  • প্রথম লাইন - #!/বিন/ব্যাশ - শেবাং শিরোনাম হিসাবে পরিচিত। এটি একটি বিশেষ নির্মাণ যা স্ক্রিপ্টটির ব্যাখ্যার জন্য কোন প্রোগ্রামটি ব্যবহৃত হবে তা নির্দেশ করে। এই ক্ষেত্রে, এটি/বিন/ব্যাশ দ্বারা নির্দেশিত বাশ শেল হবে। পাইথনের মতো অন্যান্য স্ক্রিপ্টিং ভাষা রয়েছে যা #!/Usr/bin/python3 দ্বারা চিহ্নিত করা হয়েছে এবং পার্ল যার শেবাং শিরোনাম #!/Usr/bin/perl
  • দ্বিতীয় লাইনটি একটি মন্তব্য। একটি মন্তব্য একটি বিবৃতি যা শেল স্ক্রিপ্টটি কী করে এবং স্ক্রিপ্টটি চালিত হলে কার্যকর হয় না তা বর্ণনা করে। মন্তব্যগুলি সর্বদা হ্যাশ সাইন # এর আগে থাকে
  • শেষ লাইনটি হ'ল আদেশটি যা টার্মিনালে 'হ্যালো ওয়ার্ল্ড' বার্তাটি প্রিন্ট করে।

পরবর্তী পদক্ষেপটি chmod কমান্ডটি যেমন প্রদর্শিত হবে তেমন ব্যবহারের অনুমতি নির্ধারণ করে স্ক্রিপ্টটি সম্পাদনযোগ্য করে তোলা।

$ chmod +x  hello.sh

অবশেষে, কমান্ডগুলির মধ্যে দুটি ব্যবহার করে শেল স্ক্রিপ্টটি চালান:

$ bash hello.sh
OR
$ ./hello.sh

২. কোড কার্যকর করতে শর্তাধীন বিবৃতি ব্যবহার করা

অন্যান্য প্রোগ্রামিং ভাষার মতো, শর্তসাপেক্ষ বিবৃতিগুলি বাক্য স্ক্রিপ্টিংয়ে সিদ্ধান্ত নিতে ব্যবহৃত হয়, সিনট্যাক্সের ক্ষেত্রে কেবলমাত্র একটি সামান্য প্রকরণের সাথে। আমরা যদি, অন্যথায়, এবং এলিফ শর্তাধীন বিবৃতি আবরণ করতে যাচ্ছি।

If বিবৃতিটি একক বা একাধিক শর্ত পরীক্ষা করতে ব্যবহার করা যেতে পারে। আমরা একক শর্ত পরীক্ষা করতে if স্টেটমেন্টের মৌলিক ব্যবহার দিয়ে শুরু করব। If স্টেটমেন্টটি if ... ফাই ব্লক দ্বারা সংজ্ঞায়িত করা হয়।

if command
then
  statement
fi

আসুন নীচে শেল স্ক্রিপ্টটি একবার দেখুন।

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

উপরের শেল স্ক্রিপ্টটি ব্যবহারকারীকে এমন স্কোর সরবরাহ করতে অনুরোধ জানায় যা তার পরে ভেরিয়েবল x এ সংরক্ষণ করা হয়। যদি স্কোরটি 70 এর সাথে মিলে যায় তবে স্ক্রিপ্টটি "ভাল কাজ!" প্রদান করে output তুলনামূলক অপারেটর == পরীক্ষা করতে ব্যবহৃত হয় যদি স্কোর প্রবেশ করে, যা ভেরিয়েবল x এ সঞ্চিত থাকে তবে এটি 100 এর সমান।

অন্যান্য তুলনা অপারেটরগুলি আপনি ব্যবহার করতে পারেন এর মধ্যে রয়েছে:

  • -eq - সমান
  • -ne -
  • এর সমান নয়
  • -lt -
  • এর চেয়ে কম
  • -le - এর চেয়ে কম বা সমান
  • -lt -
  • এর চেয়ে কম
  • -ge - এর চেয়ে বড় বা সমান

উদাহরণস্বরূপ, যদি ইনপুট স্কোর 50 এর চেয়ে কম মান থাকে তবে নীচের if-বিবৃতি ব্লকটি "ওয়ার্ক হার্ড" প্রিন্ট করে।

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi

এমন পরিস্থিতিতে যেখানে আপনার 2 সম্ভাব্য ফলাফল রয়েছে: - এটি হোক বা তা - যদি-অন্য বিবৃতিটি কাজে আসে।

if command
then
  statement1
else
  statement2
fi

নীচের স্ক্রিপ্টটি ইনপুট স্কোরটি পড়ে এটি 70 এর চেয়ে বড় বা সমান কিনা তা পরীক্ষা করে।

যদি স্কোরটি 70০ এর চেয়ে বেশি বা তার সমান হয় তবে আপনি একটি ‘দুর্দান্ত কাজ, আপনি পাশ করেছেন!’ বার্তাটি পাবেন। তবে, স্কোর যদি 70 এর নিচে নেমে যায় তবে আউটপুট "আপনি ব্যর্থ হয়েছেন" মুদ্রিত হবে।

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi

একাধিক শর্ত এবং বিভিন্ন ফলাফল রয়েছে এমন পরিস্থিতিতে, যদি-এলিফ-অন্য বিবৃতি ব্যবহৃত হয়। এই বিবৃতিটি নিম্নলিখিত বিন্যাসটি গ্রহণ করে।

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

উদাহরণস্বরূপ, আমাদের কাছে লটারির জন্য একটি স্ক্রিপ্ট রয়েছে যা এতে প্রবেশ করা সংখ্যা 90, 60 বা 30 হয় কিনা তা পরীক্ষা করে।

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi

৩.এফ স্টেটমেন্ট উইথ অ্যান্ড লজিক ব্যবহার করা

দুটি শর্ত সন্তুষ্ট হলে কোনও কার্য সম্পাদন করতে আপনি অ্যান্ড লজিক অপারেটরের পাশাপাশি if স্টেটমেন্টটি ব্যবহার করতে পারেন। && অপারেটরটি অ্যান্ড যুক্তিকে বোঝাতে ব্যবহৃত হয়।

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

৫. বা যুক্তি দিয়ে যদি বিবৃতি ব্যবহার করে

OR যুক্তি ব্যবহার করার সময়, এটি || প্রতীক দ্বারা প্রতিনিধিত্ব করা হয়, যে কোনও একটি শর্তের প্রত্যাশিত ফলাফল দেওয়ার জন্য স্ক্রিপ্টের সাথে সন্তুষ্ট হওয়া দরকার।

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi

লুপিং কনস্ট্রাক্টস ব্যবহার করুন

কোনও নির্দিষ্ট ফলাফল অর্জন না করা পর্যন্ত ব্যাশ লুপগুলি ব্যবহারকারীদের কয়েকটি কাজ করার অনুমতি দেয়। এটি পুনরাবৃত্তিমূলক কার্য সম্পাদনের কাজে আসে। এই বিভাগে, আমরা অন্যান্য প্রোগ্রামিং ভাষাগুলিতেও দেখতে পাবে এমন কয়েকটি লুপগুলিতে আমাদের একটি উঁকি দেওয়া হবে।

এটি কাজ করার অন্যতম সহজ লুপ। বাক্য গঠনটি বেশ সহজ:

while  <some test>
do
 commands
done

এক্সিকিউট করার সময় নীচের সময় লুপটি 1 থেকে 10 পর্যন্ত সমস্ত সংখ্যা তালিকাভুক্ত করে।

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

আসুন কিছুক্ষণের লুপটি বাতিল করি:

ভেরিয়েবল কাউন্টারটি প্রাথমিকভাবে 1 এ শুরু করা হয় এবং যখন ভেরিয়েবল 10 এর চেয়ে কম বা তার সমান হয়, শর্তটি সন্তুষ্ট না হওয়া অবধি কাউন্টারের মান বাড়ানো হবে। রেখা প্রতিধ্বনি $পাল্টা 1 থেকে 10 পর্যন্ত সমস্ত সংখ্যা মুদ্রণ করে।

সময় লুপের মতো, পুনরুক্তিযুক্ত কোড সম্পাদন করতে একটি ফর লুপ ব্যবহার করা হয়। অর্থাত্ ব্যবহারকারীর দ্বারা সংজ্ঞায়িত যতবার সম্ভব কোড প্রয়োগের পুনরাবৃত্তি করুন।

বাক্য গঠনটি হ'ল:

for var in 1 2 3 4 5 N
do
 command1
 command2
done

নীচের লুপটির জন্য 1 থেকে 10 পর্যন্ত 10 টি পুনরাবৃত্তি হয় এবং স্ক্রিনে তাদের মানগুলি প্রক্রিয়া করে।

এটি অর্জনের আরও ভাল উপায় হ'ল সমস্ত সংখ্যা টাইপ করার পরিবর্তে ডাবল কোঁকড়া ধনুর্বন্ধনী {} ব্যবহার করে একটি ব্যাপ্তি নির্ধারণ করা।

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done

বাশ অবস্থানিক পরামিতি

অবস্থানগত পরামিতি হ'ল একটি বিশেষ পরিবর্তনশীল যা স্ক্রিপ্টে উল্লেখ করা হয় যখন শেলটিতে মানগুলি পাস করা হয় তবে বরাদ্দ করা যায় না। অবস্থানগত পরামিতিগুলি $0 $1 $2 $3 …… থেকে $9 পর্যন্ত চলে। $9 মানের বাইরে, প্যারামিটারগুলি কোঁকড়া বন্ধনীগুলিতে আবদ্ধ থাকতে হবে যেমন & # 36 {10}, & # 36 {11 in… ইত্যাদি।

স্ক্রিপ্টটি কার্যকর করার সময়, প্রথম অবস্থানগত প্যারামিটার যা $0 হয় শেল স্ক্রিপ্টের নাম নেয়। $1 প্যারামিটারটি প্রথম ভেরিয়েবল নেয় যা টার্মিনালে পাস করা হয়, $2 দ্বিতীয়টি নেয়, 3 $তৃতীয় এবং আরও।

আসুন দেখা যাক স্ক্রিপ্ট টেস্ট.শ তৈরি করুন।

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

এরপরে, স্ক্রিপ্টটি কার্যকর করুন এবং আর্গুমেন্ট হিসাবে প্রথম এবং দ্বিতীয় নামটি সরবরাহ করুন:

# bash test.sh James Kiarie

আউটপুট থেকে, আমরা দেখতে পাচ্ছি যে প্রথম ভেরিয়েবল মুদ্রিত হয় শেল স্ক্রিপ্টের নাম, এই ক্ষেত্রে, test.sh. এরপরে, শেল স্ক্রিপ্টে সংজ্ঞায়িত অবস্থানীয় পরামিতিগুলির সাথে মিল রেখে নামগুলি মুদ্রিত হয়।

অবস্থানগত পরামিতিগুলি এতে কার্যকর হয় যে এগুলি আপনাকে ভেরিয়েবলের জন্য স্পষ্টভাবে একটি মান নির্ধারণের পরিবর্তে প্রবেশ করা তথ্যটি কাস্টমাইজ করতে সহায়তা করে।

শেল কমান্ড প্রস্থান কোড

আসুন একটি সাধারণ প্রশ্নের উত্তর দিয়ে শুরু করা যাক, একটি প্রস্থান কোড কী?

ব্যবহারকারী বা শেল স্ক্রিপ্ট দ্বারা শেলের উপর কার্যকর প্রতিটি কমান্ডের প্রস্থান স্থিতি থাকে। একটি প্রস্থান স্থিতি একটি পূর্ণসংখ্যা হয়।

0 এর প্রস্থান স্থিতি দ্বারা বোঝানো হয় যে কোনও ত্রুটি ছাড়াই কমান্ড সফলভাবে সম্পাদিত হয়েছে। 1 থেকে 255 এর মধ্যে যে কোনও কিছুই দেখায় যে কমান্ডটি ব্যর্থ হয়েছে বা সফলভাবে কার্যকর হয়নি।

কমান্ডের প্রস্থান স্থিতি খুঁজে পেতে $? শেল পরিবর্তনশীল ব্যবহার করুন।

একটি সাধারণ ত্রুটির কাছে 1 পয়েন্টের প্রস্থান স্থিতি বা কোনও অনিবার্য ত্রুটি যেমন সুডো অনুমতি ছাড়াই ফাইল সম্পাদনা করা।

কমান্ড বা বিল্টিন শেল ভেরিয়েবলের ভুল ব্যবহারের জন্য 2 পয়েন্টের প্রস্থান স্থিতি।

127 প্রস্থান স্থিতি একটি অবৈধ কমান্ডের দিকে নির্দেশ করে যা সাধারণত ‘আদেশটি পাওয়া যায় না’ ত্রুটি দেয় yield

স্ক্রিপ্টের মধ্যে শেল কমান্ডগুলির আউটপুট প্রসেসিং

বাশ স্ক্রিপ্টিং-এ, আপনি ভবিষ্যতের ব্যবহারের জন্য একটি কমান্ডের আউটপুট পরিবর্তনশীলতে সঞ্চয় করতে পারেন। এটিকে শেল কমান্ডের বিকল্প হিসাবেও উল্লেখ করা হয় এবং নিম্নলিখিত উপায়ে অর্জন করা যায়।

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

উদাহরণস্বরূপ, আপনি আজ নামক একটি চলকটিতে তারিখ কমান্ডটি সঞ্চয় করতে পারেন এবং বর্তমান তারিখটি প্রকাশ করতে শেল স্ক্রিপ্ট কল করতে পারেন।

#!/bin/bash

today=$(date)

echo “Today is $today”

এর অন্য একটি উদাহরণ নেওয়া যাক। মনে করুন আপনি আপনার লিনাক্স সিস্টেমে বৈধ লগইন ব্যবহারকারীদের সন্ধান করতে চান। আপনি এটি সম্পর্কে কিভাবে যেতে হবে? প্রথমে সমস্ত ব্যবহারকারীর তালিকা (উভয় সিস্টেম, প্রক্রিয়া এবং লগইন ব্যবহারকারী)/ইত্যাদি/পাসডাব্লু ফাইলটিতে সংরক্ষণ করা হয়।

ফাইলটি দেখতে, আপনাকে/বিন/ব্যাশ বৈশিষ্ট্যযুক্ত ব্যবহারকারীদের অনুসন্ধান করতে গ্রেপ কমান্ডটি ব্যবহার করতে হবে এবং নামের প্রথম 10 টি অক্ষর প্রদর্শন করতে প্রদর্শিত কাট-সি 1-10 কমান্ডটি ব্যবহার করতে হবে।

আমরা ক্যাট কমান্ডটি লগইন_ইউসার ভেরিয়েবলে সঞ্চয় করে রেখেছি।

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users

এটি শেষ করে সাধারণ শেল স্ক্রিপ্ট তৈরির বিষয়ে আমাদের টিউটোরিয়ালটি এনেছে। আমরা আশা করি আপনি এটি মূল্যবান পেয়েছেন।


সমস্ত অধিকার সংরক্ষিত. © Linux-Console.net • 2019-2024