কম্পিউটার টিউটোরিয়াল

লিনাক্স Bash স্ক্রিপ্টিং মাস্টার করুন: উন্নত টেকনিক – পার্ট III

শেল স্ক্রিপ্টিং সিরিজের পূর্বের আর্টিকেলগুলো অত্যন্ত প্রশংসিত হয়েছে এবং তাই এই আর্টিকেলটি লিখছি শেখার এই কখনোই শেষ না হওয়া প্রক্রিয়া প্রসারিত করার জন্য।

Bash কিওয়ার্ড

একটি কিওয়ার্ড হল একটি শব্দ বা সিম্বল যার একটি কম্পিউটার ল্যাঙ্গুয়েজে বিশেষ অর্থ থাকে। নিচের সিম্বল এবং শব্দগুলোর Bash-এ বিশেষ অর্থ থাকে যখন সেগুলো আনকোটেড থাকে এবং একটি কমান্ডের প্রথম শব্দ।

! esac select } case fi then [[ do for until ]] done function while elif if time else in {

বেশিরভাগ কম্পিউটার ল্যাঙ্গুয়েজের বিপরীতে, Bash কিওয়ার্ডগুলোকেও ভেরিয়েবল নাম হিসেবে ব্যবহার করার অনুমতি দেয় যদিও এতে স্ক্রিপ্ট পড়তে কঠিন হতে পারে। স্ক্রিপ্ট বোঝার সুবিধার জন্য, কিওয়ার্ড ভেরিয়েবল নাম হিসেবে ব্যবহার করা উচিত নয়।

একটি কমান্ড শেলে $(command) হিসেবে বাস্তবায়িত হয়। আপনাকে কমান্ডের ফুল পথ অন্তর্ভুক্ত করতে হতে পারে। উদাহরণস্বরূপ, $(/bin/date), সঠিক এক্সিকিউশনের জন্য।

আপনি নির্দিষ্ট প্রোগ্রামের পথ জানতে 'whereis' কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, whereis date

[admin@wsxdn.com /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

এপর্যন্ত теории জন্য পর্যাপ্ত। আমরা এখন এই থিওরি নিয়ে বেশি কথা বলব না। স্ক্রিপ্টগুলোর দিকে যাই।

বর্তমান ওয়ার্কিং ডিরেক্টরি সরানো

বর্তমান ওয়ার্কিং ডিরেক্টরি থেকে যেকোনো লেভেল আপ যান স্ক্রিপ্ট এক্সিকিউট করার সময় শেষে সংখ্যাগত মান দিয়ে।

#! /bin/bash
LEVEL=$1
for ((i = 1; i <= LEVEL; i++))
do
    CDIR=../$CDIR
done
cd $CDIR
echo "You are in: "$PWD
exec /bin/bash

উপরের কোডগুলো "up.sh" নামে আপনার ডেস্কটপে সংরক্ষণ করুন। এক্সিকিউটেবল করুন (chmod 755 up.sh)। রান করুন:

./up.sh 2 (বর্তমান ওয়ার্কিং ডিরেক্টরি দুটি লেভেল আপ যাবে)।
./up.sh 4 (বর্তমান ওয়ার্কিং ডিরেক্টরি চারটি লেভেল আপ যাবে)।

ব্যবহার এবং অ্যাপ্লিকেশন এরিয়া

  1. বড় স্ক্রিপ্টগুলিতে যেগুলো ফোল্ডার ভিতরে ফোল্ডার ভিতরে... লাইব্রেরি, বাইনারি, আইকন, এক্সিকিউটেবল ইত্যাদি বিভিন্ন লোকেশনে থাকে, আপনি একজন ডেভেলপার হিসেবে এই স্ক্রিপ্ট বাস্তবায়ন করতে পারেন ডিজায়ার লোকেশনে খুব অটোমেটেড ফ্যাশনে যেতে।

নোট: উপরের স্ক্রিপ্টে for একটি লুপ এবং এটি এক্সিকিউট করতে থাকবে যতক্ষণ পর্যন্ত লুপের জন্য মানগুলো সত্য থাকে।

নমুনা আউটপুট

[admin@wsxdn.com /]# chmod 755 up
[admin@wsxdn.com /]# ./up.sh 2
You are in: /
[admin@wsxdn.com /]# ./up.sh 4
You are in: /
[admin@wsxdn.com /]#

up.sh ডাউনলোড করুন

র‍্যান্ডম ফাইল বা ফোল্ডার তৈরি করা

ডুপ্লিকেশনের কোনো চান্স ছাড়া একটি র‍্যান্ডম ফাইল (ফোল্ডার) তৈরি করুন।

#! /bin/bash
echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

এটি একটি সিম্পল স্ক্রিপ্ট কিন্তু এর কাজ করা তত সিম্পল নয়।

  1. 'echo' : কোটেশনের ভিতরে যা লেখা আছে সেটি প্রিন্ট করে।
  2. '$' : একটি শেল ভেরিয়েবল।
  3. '>>' : আউটপুট date কমান্ডের আউটপুট এবং txt এক্সটেনশন ফলো করে রিডাইরেক্ট করা হয়।

আমরা জানি date কমান্ডের আউটপুট হল ডেট, এবং টাইম আওয়ার, মিনিট, সেকেন্ড সহ ইয়ার। অতএব আমরা একটি সংগঠিত ফাইল নেম পেতে পারি ডুপ্লিকেশন এর কোনো চান্স ছাড়া। এটি খুব উপকারী হতে পারে যখন ব্যবহারকারীকে টাইম স্ট্যাম্প সহ ফাইল তৈরি করার প্রয়োজন হয় ভবিষ্যতের রেফারেন্সের জন্য।

নমুনা আউটপুট

[admin@wsxdn.com /]# ./randomfile.sh
Hello server
Your File is being saved to /home/server/Desktop

আপনি ডেস্কটপে তৈরি ফাইলটি আজকের ডেট এবং বর্তমান টাইমসহ দেখতে পারেন।

[admin@wsxdn.com /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt
13:51:52 up 3:54, 1 user, load average: 0.09, 0.12, 0.08

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

randomfile.sh ডাউনলোড করুন

নেটওয়ার্ক ইনফরমেশন সংগ্রহ করার স্ক্রিপ্ট

একটি লিনাক্স সার্ভারে নেটওয়ার্ক ইনফরমেশন সংগ্রহ করে। স্ক্রিপ্টটি খুব বড় এবং এখানে পুরো কোড এবং আউটপুট পোস্ট করা সম্ভব নয়। তাই, আপনি নিচের ডাউনলোড লিংক ব্যবহার করে স্ক্রিপ্টটি ডাউনলোড করে নিজে টেস্ট করুন।

নোট: আপনাকে lsb-core প্যাকেজ এবং অন্যান্য প্রয়োজনীয় প্যাকেজ এবং ডিপেন্ডেন্সি ইনস্টল করতে হতে পারে। Apt বা Yum প্রয়োজনীয় প্যাকেজগুলো। অবশ্যই আপনাকে রুট হতে হবে স্ক্রিপ্ট চালাতে কারণ এখানে ব্যবহৃত অধিকাংশ কমান্ড রুট হিসেবে চালানোর জন্য কনফিগার করা।

নমুনা আউটপুট

[admin@wsxdn.com /]# ./collectnetworkinfo.sh
The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to admin@wsxdn.com_provider.com.
ktop

আপনি আপনার স্ক্রিপ্টে উপরের ইমেইল অ্যাড্রেস পরিবর্তন করে আপনার কাছে মেইল পেতে পারেন। অটোমেটিক্যালি জেনারেটেড ফাইলটি দেখা যাবে।

collectnetworkinfo.sh ডাউনলোড করুন

UPPERCASE কে lowercase-এ কনভার্ট করার স্ক্রিপ্ট

একটি স্ক্রিপ্ট যা UPPERCASE-কে lowercase-এ কনভার্ট করে এবং আউটপুট "small.txt" টেক্সট ফাইলে রিডাইরেক্ট করে যা প্রয়োজন অনুযায়ী মডিফাই করা যায়।

#!/bin/bash
echo -n "Enter File Name : "
read fileName
if [ ! -f $fileName ]; then
    echo "Filename $fileName does not exists"
    exit 1
fi
tr '[A-Z]' '[a-z]' < $fileName >> small.txt

উপরের স্ক্রিপ্টটি যেকোনো লেন্থের ফাইলের কেস এক ক্লিকে uppercase-থেকে lowercase-এ কনভার্ট করতে পারে এবং প্রয়োজনে ছোট মডিফিকেশন সহ বিপরীতও করা যায়।

নমুনা আউটপুট

[admin@wsxdn.com /]# ./convertlowercase.sh
Enter File Name : a.txt
Initial File: A B C D E F G H I J K ...

নতুন ফাইল (small.txt) আউটপুট:

a b c d e f g h i j k ...

convertlowercase.sh ডাউনলোড করুন

সিম্পল ক্যালকুলেটর প্রোগ্রাম

#! /bin/bash
clear
sum=0
i="y"
echo " Enter one no."
read n1
echo "Enter second no."
read n2
while [ $i = "y" ]
do
    echo "1.Addition"
    echo "2.Subtraction"
    echo "3.Multiplication"
    echo "4.Division"
    echo "Enter your choice"
    read ch
    case $ch in
        1)sum=`expr $n1 + $n2`; echo "Sum ="$sum;;
        2)sum=`expr $n1 - $n2`; echo "Sub = "$sum;;
        3)sum=`expr $n1 \* $n2`; echo "Mul = "$sum;;
        4)sum=`expr $n1 / $n2`; echo "Div = "$sum;;
        *)echo "Invalid choice";;
    esac
    echo "Do u want to continue (y/n)) ?"
    read i
    if [ $i != "y" ]
    then
        exit
    fi
done

নমুনা আউটপুট

[admin@wsxdn.com /]# ./simplecalc.sh
Enter one no. 12
Enter second no. 14
1.Addition
2.Subtraction
3.Multiplication
4.Division
Enter your choice 1
Sum =26
Do u want to continue (y/n)) ? y
1.Addition
2.Subtraction
3.Multiplication
4.Division
Enter your choice 3
mul = 14812
Do u want to continue (y/n)) ? n

simplecalc.sh ডাউনলোড করুন

তো দেখলেন কত সহজে গণনার মতো শক্তিশালী একটি প্রোগ্রাম এত সিম্পল উপায়ে তৈরি করা যায়। এটা শেষ নয়। আমরা এই সিরিজের কমপক্ষে আরেকটি আর্টিকেল নিয়ে আসব, অ্যাডমিনিস্ট্রেশন দৃষ্টিকোণ থেকে বিস্তারিত পারস্পেক্টিভ কভার করে।

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

  1. লিনাক্স Bash স্ক্রিপ্টিং মাস্টার করুন: উন্নত টেকনিক – পার্ট III

  2. নেস্টেড ভেরিয়েবল সাবস্টিটিউশন এবং বিল্ট-ইন BASH ভেরিয়েবল মাস্টার করুন লিনাক্সে – ফাইনাল গাইড

  3. লিনাক্স ভেরিয়েবল শেল স্ক্রিপ্টিং-এ মাস্টার করুন - পার্ট ১০: এক্সপার্ট অন্তর্দৃষ্টি

  4. লিনাক্স শেল স্ক্রিপ্টিং: ভেরিয়েবল নিয়ে গভীরে দৃষ্টিপাত – পার্ট ৯