ലിനക്സ് ബാഷ് സ്ക്രിപ്റ്റിംഗ് ലോകത്തിലൂടെയുള്ള യാത്ര - ഭാഗം III


'ഷെൽ സ്uക്രിപ്റ്റിംഗ്' സീരീസിന്റെ മുമ്പത്തെ തുടർന്നുള്ള ലേഖനങ്ങൾ വളരെയധികം ശ്രദ്ധിക്കപ്പെട്ടു, അതിനാൽ ഒരിക്കലും അവസാനിക്കാത്ത പഠന പ്രക്രിയ വിപുലീകരിക്കുന്നതിനാണ് ഞാൻ ഈ ലേഖനം എഴുതുന്നത്.

  1. അടിസ്ഥാന ലിനക്സ് ഷെൽ സ്ക്രിപ്റ്റിംഗ് ഭാഷാ നുറുങ്ങുകൾ മനസ്സിലാക്കുക - ഭാഗം I
  2. ഷെൽ പ്രോഗ്രാമിംഗ് പഠിക്കാൻ Linux നുള്ള 5 ഷെൽ സ്ക്രിപ്റ്റുകൾ - ഭാഗം II

ഒരു കമ്പ്യൂട്ടർ ഭാഷയ്ക്ക് പ്രത്യേക അർത്ഥമുള്ള ഒരു വാക്കോ ചിഹ്നമോ ആണ് കീവേഡ്. ഇനിപ്പറയുന്ന ചിഹ്നങ്ങളും വാക്കുകളും ഉദ്ധരിക്കാത്തതും ഒരു കമാൻഡിന്റെ ആദ്യ പദവുമായിരിക്കുമ്പോൾ ബാഷിന് പ്രത്യേക അർത്ഥങ്ങളുണ്ട്.

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

മിക്ക കമ്പ്യൂട്ടർ ഭാഷകളിൽ നിന്നും വ്യത്യസ്തമായി, സ്ക്രിപ്റ്റുകൾ വായിക്കാൻ ബുദ്ധിമുട്ടുണ്ടാക്കുന്നുണ്ടെങ്കിലും കീവേഡുകൾ വേരിയബിൾ നാമങ്ങളായി ഉപയോഗിക്കാൻ ബാഷ് അനുവദിക്കുന്നു. സ്ക്രിപ്റ്റുകൾ മനസ്സിലാക്കാൻ കഴിയുന്ന തരത്തിൽ, വേരിയബിൾ പേരുകൾക്കായി കീ വേഡുകൾ ഉപയോഗിക്കരുത്.

$(കമാൻഡ്) ആയി ഷെല്ലിൽ ഒരു കമാൻഡ് നടപ്പിലാക്കുന്നു. നിങ്ങൾക്ക് കമാൻഡിന്റെ മുഴുവൻ പാതയും ഉൾപ്പെടുത്തേണ്ടി വന്നേക്കാം. ഉദാ., $ (/bin/date), ശരിയായ നിർവ്വഹണത്തിന്.

'whereis' കമാൻഡ് ഉപയോഗിച്ച് നിർദ്ദിഷ്ട പ്രോഗ്രാമിന്റെ പാത നിങ്ങൾക്ക് അറിയാമായിരിക്കും. ഉദാ., എവിടെയാണ് തീയതി

 whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

തൽക്കാലം അത് മതി. ഈ സിദ്ധാന്തത്തെക്കുറിച്ച് നമ്മൾ ഇപ്പോൾ അധികം സംസാരിക്കില്ല. സ്ക്രിപ്റ്റിലേക്ക് വരുന്നു.

നിലവിലെ വർക്കിംഗ് ഡയറക്ടറി നീക്കുക

എക്സിക്യൂട്ട് ചെയ്യുമ്പോൾ സ്ക്രിപ്റ്റിന്റെ അവസാനം സംഖ്യാ മൂല്യം നൽകിക്കൊണ്ട് നിലവിലെ വർക്കിംഗ് ഡയറക്uടറിയിൽ നിന്ന് ഏത് തലത്തിലേക്കും നീങ്ങുക.

#! /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 (നിലവിലെ വർക്കിംഗ് ഡയറക്uടറി രണ്ട് ലെവലിലേക്ക് മാറ്റും).
./up.sh 4 (നിലവിലെ വർക്കിംഗ് ഡയറക്uടറിയെ നാല് ലെവലിലേക്ക് മാറ്റും).

വ്യത്യസ്ത സ്ഥലങ്ങളിൽ ലൈബ്രറികൾ, ബൈനറികൾ, ഐക്കണുകൾ, എക്uസിക്യൂട്ടബിളുകൾ മുതലായവ അടങ്ങുന്ന... ഫോൾഡറിനുള്ളിൽ ഫോൾഡർ അടങ്ങുന്ന വലിയ സ്uക്രിപ്റ്റുകളിൽ, ഒരു ഡെവലപ്പർ എന്ന നിലയിൽ നിങ്ങൾക്ക് ഈ സ്uക്രിപ്റ്റ് വളരെ ഓട്ടോമേറ്റഡ് രീതിയിൽ ആവശ്യമുള്ള സ്ഥലത്തേക്ക് മാറ്റാൻ കഴിയും.

ശ്രദ്ധിക്കുക: മുകളിലെ സ്ക്രിപ്റ്റിലെ ഒരു ലൂപ്പാണ് ഫോർ, ലൂപ്പിന് മൂല്യങ്ങൾ ശരിയാകുന്നതുവരെ അത് എക്സിക്യൂട്ട് ചെയ്യുന്നത് തുടരും.

 chmod 755 up
 ./up.sh 2
You are in: /

 ./up.sh 4 
You are in: / 

ഒരു റാൻഡം ഫയൽ അല്ലെങ്കിൽ ഫോൾഡർ സൃഷ്ടിക്കുക

തനിപ്പകർപ്പിനുള്ള സാധ്യതയില്ലാത്ത ഒരു ക്രമരഹിത ഫയൽ (ഫോൾഡർ) സൃഷ്ടിക്കുക.

#! /bin/bash

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

ഇതൊരു ലളിതമായ സ്ക്രിപ്റ്റാണ്, പക്ഷേ ഇത് പ്രവർത്തിക്കുന്നത് അത്ര ലളിതമല്ല.

  1. ‘echo’ : ഉദ്ധരണികൾക്കുള്ളിൽ എഴുതിയതെല്ലാം പ്രിന്റ് ചെയ്യുന്നു.
  2. ‘$‘ : ഒരു ഷെൽ വേരിയബിളാണ്.
  3. ‘>>‘ : ഔട്ട്uപുട്ട് ഔട്ട്uപുട്ട് ഓഫ് ഡേറ്റ് കമാൻഡിലേയ്uക്ക് റീഡയറക്uടുചെയ്യുന്നു, തുടർന്ന് txt വിപുലീകരണവും.

തീയതി കമാൻഡിന്റെ ഔട്ട്uപുട്ട് തീയതിയാണെന്നും വർഷത്തോടൊപ്പം മണിക്കൂർ, മിനിറ്റ്, സെക്കൻഡ് എന്നിവയിലെ സമയം ആണെന്നും ഞങ്ങൾക്കറിയാം. അതിനാൽ ഫയൽനാമം തനിപ്പകർപ്പാക്കാനുള്ള സാധ്യതയില്ലാതെ നമുക്ക് ഒരു സംഘടിത ഫയൽ നാമത്തിൽ ഔട്ട്പുട്ട് ലഭിക്കും. ഭാവി റഫറൻസിനായി ടൈം സ്റ്റാമ്പ് ഉപയോഗിച്ച് സൃഷ്uടിച്ച ഫയൽ ഉപയോക്താവിന് ആവശ്യമുള്ളപ്പോൾ ഇത് വളരെ ഉപയോഗപ്രദമാകും.

 ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

ഇന്നത്തെ തീയതിയും നിലവിലെ സമയവും ഉപയോഗിച്ച് ഡെസ്ക്ടോപ്പിൽ സൃഷ്ടിച്ച ഫയൽ നിങ്ങൾക്ക് കാണാൻ കഴിയും.

 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

മുകളിലുള്ള സ്uക്രിപ്റ്റിന്റെ കൂടുതൽ വിശദമായ നടപ്പാക്കൽ ചുവടെ നൽകിയിരിക്കുന്നു, ഇത് മുകളിലുള്ള തത്വത്തിൽ പ്രവർത്തിക്കുകയും ഒരു ലിനക്സ് സെർവറിന്റെ നെറ്റ്uവർക്ക് വിവരങ്ങൾ ശേഖരിക്കുന്നതിന് വളരെ ഉപയോഗപ്രദവുമാണ്.

നെറ്റ്uവർക്ക് വിവരങ്ങൾ ശേഖരിക്കുന്നതിനുള്ള സ്uക്രിപ്റ്റ്

ഒരു Linux സെർവറിൽ നെറ്റ്uവർക്ക് വിവരങ്ങൾ ശേഖരിക്കുന്നു. സ്uക്രിപ്റ്റ് വളരെ വലുതാണ്, സ്uക്രിപ്റ്റിന്റെ മുഴുവൻ കോഡും ഔട്ട്uപുട്ടും ഇവിടെ പോസ്റ്റ് ചെയ്യാൻ സാധ്യമല്ല. അതിനാൽ, ചുവടെയുള്ള ഡൗൺലോഡ് ലിങ്ക് ഉപയോഗിച്ച് നിങ്ങൾക്ക് സ്uക്രിപ്റ്റ് ഡൗൺലോഡ് ചെയ്uത് സ്വയം പരീക്ഷിക്കാൻ കഴിയുന്നതാണ് നല്ലത്.

ശ്രദ്ധിക്കുക: നിങ്ങൾ lsb-core പാക്കേജും ആവശ്യമായ മറ്റ് പാക്കേജുകളും ഡിപൻഡൻസിയും ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതായി വന്നേക്കാം. ആവശ്യമായ പാക്കേജുകൾ Apt അല്ലെങ്കിൽ Yum ചെയ്യുക. ഇവിടെ ഉപയോഗിച്ചിരിക്കുന്ന മിക്ക കമാൻഡുകളും റൂട്ടായി പ്രവർത്തിപ്പിക്കുന്നതിനായി ക്രമീകരിച്ചിരിക്കുന്നതിനാൽ സ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുന്നതിന് നിങ്ങൾ റൂട്ട് ആയിരിക്കണം.

 ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to [email _provider.com. ktop

മുകളിലെ ഇമെയിൽ വിലാസം നിങ്ങൾക്ക് മെയിൽ ചെയ്യുന്നതിനായി നിങ്ങളുടെ സ്ക്രിപ്റ്റിൽ മാറ്റാവുന്നതാണ്. സ്വയമേവ ജനറേറ്റുചെയ്ത ഫയൽ കാണാൻ കഴിയും.

സ്ക്രിപ്റ്റ് അപ്പർകേസ് ചെറിയക്ഷരത്തിലേക്ക് പരിവർത്തനം ചെയ്യുന്നു

UPPERCASE-നെ ചെറിയക്ഷരത്തിലേക്ക് പരിവർത്തനം ചെയ്യുകയും ആവശ്യാനുസരണം പരിഷ്uക്കരിക്കാവുന്ന small.txt എന്ന ടെക്uസ്uറ്റ് ഫയലിലേക്ക് ഔട്ട്uപുട്ട് റീഡയറക്uട് ചെയ്യുകയും ചെയ്യുന്ന ഒരു സ്uക്രിപ്റ്റ്.

#!/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

ഈ മുകളിലെ സ്uക്രിപ്റ്റിന്, ചെറിയൊരു പരിഷ്uക്കരണത്തോടെ, വലിയക്ഷരത്തിൽ നിന്ന് ചെറിയക്ഷരത്തിലേക്കും തിരിച്ചും ഒരു ക്ലിക്കിലൂടെ ഏത് നീളമുള്ള ഫയലിന്റെ കേസ് പരിവർത്തനം ചെയ്യാനാകും.

 ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

പുതിയ ഫയൽ (small.txt) ഔട്ട്uപുട്ട്:

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

ലളിതമായ കാൽക്കുലേറ്റർ പ്രോഗ്രാം

#! /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
 ./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

അത്രയും ലളിതമായ രീതിയിൽ കണക്കുകൂട്ടലുകളായി ശക്തമായ ഒരു പ്രോഗ്രാം സൃഷ്ടിക്കുന്നത് എത്ര എളുപ്പമാണെന്ന് നിങ്ങൾ കണ്ടോ. അത് അവസാനമല്ല. അഡ്മിനിസ്ട്രേഷൻ വീക്ഷണത്തിൽ നിന്ന് വിശാലമായ വീക്ഷണം ഉൾക്കൊള്ളുന്ന ഈ പരമ്പരയിലെ ഒരു ലേഖനമെങ്കിലും ഞങ്ങൾ തയ്യാറാക്കും.

ഇപ്പോഴത്തേക്ക് ഇത്രമാത്രം. വായനക്കാരനും മികച്ച വിമർശകനുമായതിനാൽ, ഈ ലേഖനത്തിൽ നിങ്ങൾ എത്രമാത്രം ആസ്വദിച്ചുവെന്നും ഭാവി ലേഖനത്തിൽ എന്താണ് കാണാൻ ആഗ്രഹിക്കുന്നതെന്നും ഞങ്ങളോട് പറയാൻ മറക്കരുത്. അഭിപ്രായത്തിൽ ഏത് ചോദ്യവും വളരെ സ്വാഗതം ചെയ്യുന്നു. അതുവരെ ആരോഗ്യത്തോടെയും സുരക്ഷിതത്വത്തോടെയും ശ്രദ്ധയോടെയും തുടരുക. ഞങ്ങളെ ലൈക്ക് ചെയ്യുകയും ഷെയർ ചെയ്യുകയും പ്രചരിപ്പിക്കാൻ സഹായിക്കുകയും ചെയ്യുക.