2011-10-26

ලිනක්ස් Shell Programming පාඩම-කොටස 07




13.වේරියබල්නාමකරණයේ නීති රීති.
01.shellවේරියබල්වලට Alphanumeric (අකුරුඉලක්කම් දෙකම අන්තර්ගත )නම්දෙන්න පුලුවන් ඒ වගේම underscore(_) එකත් භාවිතා කරන්නපුලුවන් පහල තියන උදාහරණ බලන්න.

ex-: HOME
BASH
van
_number
system_version

02.වේරියබල්වලට අගයන් assign කරනකොටමෙන්න මේවගේ සමාන ලකුණ දෙපැත්තෙඉඩ තියෙන්න බෑ හරිද ?

no = 10
name = saman 

ඒවගේම මේවත් වැරදියි 
 
no =10
no= 10

කොහොමහරි ඉඩ තියන්න බෑ = ලකුණදෙපැත්තෙ.

03.වේරියබල්නම් case-sensitive ඒකියන්නෙ අකුරු වල කැපිටල්සිම්පල් බේදය බලපානව ඒක තේරුම්ගන්න පහල තියෙන උදාහරණ බලන්න.
මුලින්මno කියල variable එකක්හදල ඒකට 10 assing කරන්න.

no=10

දැන්ඒක ප්‍රින්ට් කරල බලන්න

echo $no

10 කියලමනේද ප්‍රින්ට් වෙන්නෙ ?දැන් ආයෙ මෙහෙමකරන්න.

no=20

ආයෙත්ප්‍රින්ට් කරන්න දැන්
echo $no

උත්තරේ20 නේද ? මේකෙන්ඔයාට තේරේවි කලින් තිබුන noකියන වේරියබල් එකේvalue එකම තමයි දෙවනිපාරත් වෙනස් උනේ කියල.ඊළඟටබලන්න පහල තියෙන කතාව.
  1.  
    1.  
      1. animal=cat
      2. animaL=dog
      3. Animal=rabbit
මෙතනතියෙන වේරියබ්ල් 3ක්තුනේම නම එකමයි ඒත් ලියපු ආකාරවෙනස් තුනේම තියෙන ඒව ප්‍රින්ට්කරල බැලුවොත් එකිනෙකට වෙනස්අගයන් තමයි තියෙන්නෙ කලින්වගේ නැවත නැවත වේරියබල් valuesවෙනස් උනේ නෑ.දැන්තේරුනා නේද case-sensitive කතාව.

4. Null වේරියබල් සැදීම.

value එකක් assign නොකර හදන වේරියබල් එකක් තමයි නල් වේරියබල් එකක් කියල හදුන්වන්නෙ.ඒව හදන හැටි බලන්න දැන්


animal=
animal=” ”

මේක්‍රම දෙකටම කරන්න පුලුවන්දැන් මේක ප්‍රින්ට් කරල බලන්නඑතකොට terminal එකේහිස් ලයින් එකක් ප්‍රින්ට්වෙනව ඔයාලට බලාගන්න පුලුවන්.

5. අන්තිමටකියන්න තියෙන කරුණ තමයි ?හා * කියනලකුණු වේරියබල්ස් නම් කරනකොටයොදා ගන්න එපා කියල.ඔන්නඔය කිව්ව කරුණු 5 තමයිවේරියබල් නාමකරණයේ නීති රීතිවිදියට තියෙන්නෙ.
  1. වේරියබල් ඇක්සස් කිරීම හා ප්‍රින්ට් කිරීම
මේ ගැනනම් ඔයාල කලින් ඉගෙන ගත්ත.වේරියබල්එකක් access කරන්නෙමෙහෙමයි
$වේරියබල්එකේ නම
වේරියබල්හදන්නෙ මෙහෙමයි

flowers=rose

ඒ හදපුඑක ප්‍රින්ට් කරන්නෙ මෙහෙමයි
echo $flowers

ප්‍රින්ට්කරනකොට අනිවා $ දාන්නඔන නැත්තම් ප්‍රින්ට් වෙන්නෙවේරියබල් එකේ තියෙන value එකනෙවෙයි echo ට ඉස්සරහින්තියෙන එකමයි. $ මගින්තමයි නිතරම වේරියබල් තේරුම්ගන්නෙ.

 

  1.  
    1.  




2011-10-20

ලිනක්ස් Shell Programming පාඩම-කොටස 06



11. විචල්‍ය (වේරියබල්)

                           අපි කම්පියුටරෙන් මොකක් හරි වැඩක් කරනකොට අපි භාවිතා කරන සමහර දත්ත RAM මෙමරි එකේ තැම්පත් කරල තියාගන්නව කියල ඔයාල දන්නවනෙ. Ram එක කුඩා කොටස් ගණනාවකට බෙදල තියෙන්නෙ ඒ හැම කොටසකටම එකිනෙකට වෙනස් ඇඩ්ඩ්‍රස් තියෙනව හරියට අපෙ ගෙවල් වලට තියෙනව වගේ අපි ඒ කුඩා කොටසක් හදුන්වනව memory location එකක් කියල. ඒව ඇතුලෙ තමයි අපේ දත්ත ගබඩා වෙලා තියෙන්නෙ. ප්‍රෝග්‍රැමර්ස් ලට පුලුවන් ඒ අඩ්ඩ්‍රස් වෙනස් කරගන්න කැමති විදියකට. අන්න එහෙම වෙනත් නමකින් memory location එකක් වෙන් කර ගත්තම අපි එකට කියනව variable එකක් කියල.මේ variable එකක එක පාරකට save කරන්න පුලුවන් එක වර්ගයක දත්ත විතරයි.

Shell ගැන කතා කරනකොට අපි variables දෙකක් ගැන කතා කරනව ඒව තමයි.
  1. System Variables (SV)- මේව හදල තියෙන්නෙ shell හදපු අයම තමයි අපට වෙනස් කරන්න බෑ නිතරම මේව ලියන්නෙ ඉංග්‍රීසි කැපිටල් අකුරු වලින්.
  2. User defined Variables (UDV) – මේව හදල නඩත්තු කරන්නෙ User ඒ කියන්නෙ අපි. මේ වේරියබල්ස් ලියනකොට ලියන්නෙ ඉංග්‍රීසි සිම්පල් අකුරු වලින්.
මම දැන් දෙනව ගොඩක් වැදගත් වෙන SV කිහිපයක් ඒව මේව වෙනස් කරන්න යන්න නම් එපා. එහෙම කරොත් සමහර විට අවුල් අතිවෙන්න පුලුවන්.

01.BASH - මේකෙ තියෙන්නෙ අපේ computer එකේ තියෙන shell වර්ගය(නම). 

02.BASH_VERSION -computer එකේ තියෙන shell version.

03.COLUMNS- අපේ ස්ක්‍රීන් එකේ තියෙන columns ගණන.

04.HOME- අපේ home directory එකේ name එක.

05.LINES- අපේ ස්ක්‍රීන් එකේ තියෙන ළlines ගණන.

06.LOGNAME-දැනට අපි ලොග් වෙලා ඉන්න නම.

07.OSTYPE- අපේ තියෙන OS එකේ වර්ගය.

08.PATH-path වල සැකැස්ම.

09.PS1-අපේ ප්‍රොම්ට්(prompt) සැකැස්ම

10.PWD -අපි දැනට ඉන්න ඩිරෙක්ටරි එක.

11.SHELL-මේකෙ තියෙන්නෙ අපේ computer එකේ තියෙන shell වර්ගය(නම). 

12.USERNAME- දැනට ලොග් වෙලා ඉන්න කෙනාගෙ username එක.

මේ තියෙන හැම වේරියබල් එකකම මොනව හරි අගයක් save වෙලා තියෙනව ඔයාලට ඒක බලා ගන්න ඔන නම් මෙන්න මෙහෙම කරල බලන්න.

echo $BASH

echo $USERNAME 

මෙහෙම හැම variable එකකම තියෙන අගයන් ප්‍රින්ට් කරල බලන්න පුලුවන් අනිව $ මාර්ක් එක තියෙන්න ඕන Variable එකට ඉස්සරහින් හරිද ? මෙන්න මෙහෙම කරොත් ප්‍රින්ට් වෙන්න වෙන එකක් 
 
echo BASH
වේරියබල් එකේ නම ම තමයි ප්‍රින්ට් වෙන්නෙ.

අපට පුලුවන් 
                     BASH=කැමති වැලියු එකක්”

කියල දීල BASH කියන SV එකේ අගය වෙනස් කරන්න ඒත් එහෙම කරන්න යන්න එපා. ඒ වෙගේ ඒව පස්සෙ කරල බලන්න පුලුවන්.

12.User defined variables ගැන කතා කරමු දැන්

අපි හදමු name කියල variable එකක් ඒකට assign කරමු Nimal කියල ඒක කරන්නෙ මෙහෙමයි

name=nimal 

හරිම සරලයි මෙන්න මේකයි පොදු ක්‍රමය වේරියබල් හැදීමේ 
 
වේරියබල් එකේ නම=assing කරන්න බලාපොරොත්තු වෙන අගය 
 
මතක තියාගන්න name = nimal කියල සමාන ලකුන දෙපැත්තෙ ඉඩ (spaces) තියන්න බැරි බව.

මෙන්න තව එව්ව ටිකක්
      1. animal=cat
      2. blogs=madterminal.blogspot.com
      3. vehicle=car
      4. integer=15
      5. double=19.258
හැබැයි මෙන්න මෙහෙම නම් කරන්න බෑ හරිද

15=integer

 මේවගේ value එකට නමක් දාන්න නම් බෑ එතකොට වැරදියි. නිතරම දාන අගය තියෙන්න ඔන දකුණු පැත්තෙ.

01.animal=cat
02.blogs=madterminal.blogspot.com
03.vehicle=car

මේ තියෙන ඒව අර්ත දක්වන්නෙ මෙහෙමයි

animal=cat -:Animal having cat සත්තු අතර තමයි පූස ඉන්නෙ
blogs=madterminal.blogspot.com -:blogs having madterminal.blogspot.com බ්ලොග් වල තමයි madterminal.blogspot.com තියෙන්නෙ.

vehicle=car -: vehicle having car වාහන වල තමයි car තියෙන්නෙ.

වේරියබල් නාමකරණයේ නීති රීති. next පාඩමෙන් බලාපොරොත්තු වෙන්න.

2011-10-19

වැඩකාරයෙක් නම් මේක විසඳන්න..


මේක පොඩි ගණිත ගැටලුවක්. සමහර අය නම් දන්නවා ඇති ඒ අය අනිත් අයට පොඩ්ඩක් හිතන්න ඉඩ දෙන්න. පිළිතුර එකපාරටම කියන්න යන්න එපා.


ගැටලුව -: ළමයි තුන්දෙනෙක් හිටිය මේ තුන්දෙනා දවසක් කඩේකට ගියා තේ බොන්න.අන්තිමට ඒ අයගෙ බිල රුපියල් 25 දැන් එක් එක් කෙනා රුපියල් දහය බැගින් දෙනව කඩේට ඒ කියන්නෙ රුපියල් 30. දැන් මේ අයගෙ බැලන්ස් එක රුපියල් 5 නෙ,මුදලාලි ඒ රුපියල් පහ දෙන්නෙ රුපියලේ කාසි 3 යි දෙකේ කාසි 1 යි.දැන ළමයි තුන් දෙනා රුපියලේ කාසි තුන බෙදා ගන්නව. ඉතුරු රුපියල් දෙක වේටර්ට ටිප් එකක් විදියට දෙනව. එතකොට ගාන ඔක්කොම හරිනෙ. 

දැන් ගැටලුව මේකයි එක් ළමයෙක්ගෙන් වියදම රුපියල් 9 නෙ (ළමයෙක් කඩේට රුපියල් 10 ක් දුන්න අන්තිමට මුදලාලි දුන්න 5 න් දෙකක් වේටර්ට දීල ඉතුරු රුපියල් තුන එක් එක් ළමය බෙදා ගත්තනෙ) එතකොට මුලු ගාණ මෙහෙමනෙ.

 එක් ළමයෙක්ගෙන් වියදම        = රු  9 
ළමයි තුන්දෙනාගෙන්ම වියදම     = රු  9 * 3
                                         = රු   27/=
වේටර්ට දුන්න ටිප් එක             = රු     2/=

එතකොට මුලු වියදම                = රු   27 + 2 
                                         = රු    29/=

දැන් තියන ප්‍රශ්නෙ ඉතුරු රුපියලට මොකද උනේ ?

2011-10-18

ලිනක්ස් Shell Programming පාඩම-කොටස 05



10.Exit Status කියන්නෙ මොකද්ද?
කලින් පාඩමේ අන්තිමට කරපු උදාහරණෙ අන්තිමට තිබුන මතකද exit 0 කියල එකක්. ඒ මොකද්ද කියල තමයි මම කියන්න යන්නෙ දැන්.

$ gedit my

#

# This is My 2nd shell Script

# Print multipal Lines using echo

clear

echo "mad Terminal $USER"

echo "mad Terminals date \c" ;date

echo "User info : \c" ; who | wc -l

echo "Calendar"


cal

exit 0
 
මේකයි කතාව Linux වලදි මොකක් හරි Command එකක් හරි shell Command එකක් හරි රන් කරහම ඒ රන් කරපු එක successful නම් එක් අගයකුත් successful නැත්තම් තවත් අගයකුත් return වෙනව.මෙන්න මේකට තමයි exit status එක කියල කියන්නෙ.මේ value එක ගබඩා වෙන්නෙ $? කියල විශේෂ variable එකකට.අපි ඒක කරල බලමුකො දැන්.

ඔයාලගෙ terminal එක open කරල මෙහෙම type කරන්න.
rm catAnddog
catAnddog කියන එකට කැමති නමක් දෙන්න (හැබැයි ඒ නමින් file එකක් හරි directory තියෙන්න බෑ එතන)
rm - කියන්නෙ අයින් කරන්න කියල (delete)
catAnddog කියන්නෙ file එකක නමක්

    rm catAnddog වලින් වෙන්නෙ දැනට ඉන්න directory එකේ තියෙන catAnddog කියන file එක අයින් කරන එක ඒත් එහෙම කරන්න එතන catAnddog කියල file එකක් නැති නිසා rm: cannot remove `catAnddog': No such file or directory කියල error පණිවිඩයක් පෙන්නාවි Terminal එකේ දැන් අපි command එකක් රන් කරානෙ ඒනිසා exit status එක වෙනස් වෙලා තියෙන්නෙ දැන් (ඒ කියන්නෙ $? කියන variable එකට අගයක් Assign වෙලා තියෙන්න ඔන) අපි දැන් බලමු ඒ අගය මොකද්ද කියල ඒක බලන්නෙ මෙහෙමයි terminal එකේ ටtype කරන්න echo $? කියල මේ කමාන්ඩ් එක රන් කරහම 1 කියල ප්‍රින්ට් උනා නේද ? දැන් ls කියල type කරල enter කරන්නකො (ls කියන කමාන්ඩ් එකෙන් පුලුවන් දැනට ඉන්න directory එකේ තියෙන සියලු files බලා ගන්න) දැන් ඔයා අයෙ echo $? රන් කරහම 0 කියල print උනා නේද? මෙන්න මේකයි වෙන්නෙ කමාන්ඩ් එක හරි shell එක හරි හරියට රන් උනේ නැත්තම් exit status එක 1 වෙනෙව හරියට රන් උනානම් exit status එක 0 වෙනව කලින් දෙවනියට රන් කරපු ls command එක error නැතුව රන් උන නිසා $? ගෙ අගය 0 උනා .
මෙන්න මෙතන තියන උදාහරණ කිහිපයත් බලන්න.
01. expr 5 + 3
echo $?

02. echo hi man
echo $?


03. wildwest canwork?
echo $?


04. date
echo $?


05. echon $?
echo $?


06. echo cal
echo $?


ඊළඟට මම දෙන්නම් තවත් shell වල භාවිතා කරන variables කිහිපයක් දැනට මේව ඒ තරම් නොතේරුනාට කමක් නෑ පස්සෙ මේව ගැන දැනගන්න ලැබෙයි.


$# : Number of command line arguments. Useful to test no. of command line args in shell script.

$* :All arguments to shell

$@ :Same as above

$- :Option supplied to shell

$$ :PID of shell

$! :PID of last started background process (started with &)

මේ උදාහරණෙන් ඔයාට යම් අදහසක් ලැබෙයි මේ ගැන
####################################################

$ vi demo
#!/bin/sh
#
# Script that demos, command line args
#
echo "Total number of command line argument are $#"
echo "$0 is script name"
echo "$1 is first argument"
echo "$2 is second argument"
echo "All of them are :- $* or $@"

###################################################

2011-10-14

ලිනක්ස් Shell Programming පාඩම-කොටස 04


කලින් පාඩමේදි file Permissions ගැන කතා කරා මතකයි නෙ.

දැන් බලමු අපි කොහොමද අපි හදාගනිපු file එකක Permissions වෙනස් කරන්නෙ කියල.

මේකට use කරනව chmod කියල Command එකක් ඒක use කරන්නෙ පහල තියෙන විදියට (වරහන් දෙක දාන්නෙ නෑ හරිද? )

chmod {Permisson mode } {file-name}

මේක තව සරල කර ගත්තොත් මෙහෙමයි තියනව my.txt කියල TEXT FILE එකක් මට ඔන ඒකෙ Permissions එක 761 (කලින් උදාහරණ් 2 තියෙන Permission එක) විදියට හදන්න. මම එතකොට කරන්නෙ මෙහෙමයි.(මුලින්ම file එක තියෙන තැනට ටර්මිනල් එකෙන් යන්න ඔන හරිද?)
 
chmod 761 my.txt

දැන් මේ වැඩෙත් කරල බලන්න.
මෙහෙම දීල බලන්න

chmod 000 my.txt

file එක හොල්ලන්නවත් දෙන්නෙ නෑ නේද? R,W,X කිසිම දෙයක් කරන්න අවසරයක් නැති වෙනව.මෙහෙම කරල වැරදිලාවත් ඒ file එකක් ඩිලීට් කරන්න ඔන උනොත්  ආයෙ පර්මිශන් එක වෙනස් කරන්න ඔන නැත්තම් administrator ගෙන් ලොග් වෙන්න ඔන.

chmod -R 755 directory-name 

 කියන Command එකෙන් පුලුවන් directory(ෆොල්ඩර්) එකක permission එක වෙනස් කරන්න.(ඔන්න ෆොල්ඩර් ලොක් කරන්න නියම ක්‍රමයක්)

පුරුදු වෙන්නත් එක්ක එක එක files වල permissions වෙනස් කරල බලන්න(තමන් හදපු ඒවයෙම කරල බලන එක ඇඟට ගුණයි.)

ඔන්න මෙතනින් file permission කතන්දරේ ඉවර වෙනව අපි අයෙ යමු shell වලට.

9.Shell Script

shell script එකක් රන් කරන ආකාරය..

අපි ලියාගනිපු shell Script එකක් ක්‍රම 3 කින් රන් කරවන්න පුලුවන්
1. bash ස්ක්‍රිප්ට් එකේ නම
2. sh ස්ක්‍රිප්ට් එකේ නම
3. ./ස්ක්‍රිප්ට් එකේ නම 

උදාහරණයක් විදියට cake කියල නම තියෙන ස්ක්‍රිප්ට් එක රන් කරන ආකාරය බලමු.
1. bash cake
2. sh cake
3. ./cake 
 
කලින් කියපු 3වන ක්‍රමයෙ ./ කියන කේ අදහස තමයි current directory කියන එක ඒ කියන්නෙ අපි දැනට ඉන්න directory එකේ තියන file එකක් තමයි රන් කරවන්නෙ කියල. (.) ඩොට් එක විතරක් ගත්තොතින් ඒකෙ තේරුම ඩොට් එක විතරක් යොදාගෙන shell එක රන් කෙරෙව්වොතින් shell එකේ copy එකක් හදන්න එපා කියල(ටෙම්පරි හදන්න එපා කියන එක).බලන්න පහල තියෙන එක රන් කරල තියෙන්නෙ ඩොට් එක විතරක් use කරල.

. shellname (. එක හා ශෙල් name එක අතරෙ space එකක් තියෙනව)


ඔන්න දැන් අපි අපේ මුල්ම shell Script එක ලියල රන් කරවන්නයි හදන්නෙ. මුලුන්ම ඔයාලගෙ කැමතිම text editor එකක් අරගෙන පහල තියෙන දේවල් ටික හරියටම ඒ විදියට ලියා ගන්න.මම නම් ගන්නෙ උබුන්ටු වල තියන gedit කියන text editor එක.

$ gedit my
#
# This is My first shell Script
#
clear
echo "mad Terminal"

මේක ලියල කොහෙට හරි save කරගන්න මම නම් save කරේ Desktop එකට.
ඊළඟට permission හදන්න.

chmod 755 my.txt 
 
කියල දෙන්න දැන් ./my.txt කියල දීල script එක රන් කරවන්න.වැරදීමක් උනේ නැත්තම් මේක අවුලක් නැතුව රන් වෙනව.ඊ ළඟට බලමු දැන් ලියපු එකේ තියෙන වැඩ කෑලි මොනවද කියල.

**පුරුදු වෙන්නත් එක්ක මේක හැම ක්‍රමේකටම රන් කරල බලන්න.**

  1. මුලින්ම තියෙන $ gedit my කියන එකෙන් කියෙන්නෙ gedit කියන editor එක start කරවන්න කියල.

  2. මොකක් හරි දෙයක් ලියල ඒක ඉස්සරහින් # කියල දැම්මොත් ඒ ලියපු එක Comment එකක් කියල අපි හදුන්වනව. ඒ ලියපු එකෙන් script එකට කිසිම බලපැමක් නෑ මේව යොදාගෙන අපට පුලුවන් script එක ගැන වැඩි විස්තර ඒක ඇතුලෙම අන්තර් ගත කරල තියන්න.එතකොට පස්සෙ කාලෙක බලන කෙනක්ට උනත් ඒ ගැන තේරුම් ගන්න පුලුවන් ලේසියෙන්ම. නිකමට උඩ ලියපු shell එකේ clear හා echo කියන ඒව ඉස්සරහිනුත්
    # දාල බලන්න එතකොට ඒව රන් වෙන්නෙ නෑ කියල ඔයාලට පෙනෙයි.
  3. clear මේ command එකෙන් වෙන්නෙ terminal එක clear වෙන එක
  4. echo "mad Terminal" මේකෙන් තමයි mad Terminalකියල print වෙන එක වෙන්නෙ echo වලින් පුලුවන් variable value(variable එකක් කියන්නෙ Computer Ram එකේ හදාගන්න මෙමරි space එකක් ) එකක් හරි Message එකක් හරි Screen එකේ print කරවන්න.
අපි කලින් කරපු shell programm එක save කරේ my.txt කියලනෙ සාමාන්‍යයෙන් shell Script එකක් save කරනකොට අගට .sh කියල save කරන්න (my.sh වගේ) එතකොට ඒක අදුරගන්න පුලුවන් ලේසියෙන් මෙතන ඉදන් ඉස්සරහට කරන ඔක්කොම ඒ විදියට save කරන්න.

පුරුදු වෙන්නත් එක්ක ඔයාලත් මේව කරල බලන්න.

01.
#####################################
$ gedit my
#
# This is My 2nd shell Script
# Print multipal Lines using echo
clear
echo "mad Terminal 1"
echo "mad Terminal 2"
echo "mad Terminal 3"

#####################################

02.
####################################################

$ gedit my
#
# This is My 2nd shell Script
# Print multipal Lines using echo
clear
echo "mad Terminal $USER"
echo "mad Terminals date \c" ;date
echo "User info : \c" ; who | wc -l
echo "Calendar"
cal
exit 0

###################################################


03.
#####################################
$ gedit my
#
# This is My 3rd shell Script
# Print Stars using echo
clear
echo "*"
echo "**"
echo "***"
echo "****"
echo "*****"
echo "******"

අවුල් සහගත තත්ව තිබේ නම්  වාර්තා කරන්න.

2011-10-10

ලිනක්ස් Shell Programming පාඩම-කොටස 03




5.Shell Script කියන්නෙ මොනවද?

කලින් අපි ඉගෙන ගත්තනෙ shell කියන්නෙ මොනවද කියල දැන් බලමු shell Script කියන්නෙ මොනවද කියල. සරලවම කිව්වොත් shell Script කියල කියන්නෙ shell Command එක කට වැඩි ප්‍රමාණයක් අනුපිළිවෙලට ලියල තියෙන file එකකට(series of command කියල හිතමකො ) මේ script එක රන් කරහම ඒක ඇතුලෙ ලියල තියෙන කමාන්ඩ්ස් රන් වීම සිද්ධ වෙනව. මේක වින්ඩෝස් වල තියෙන MS-Dos batch file එකකට සමාන කරන්න පුලුවන් හැබැයි ඊට වඩා ගොඩක් බලවත්.

6.ඇයි අපි මේ shell Script ලියන්නෙ ?

01. user ගෙ inputs මෙ Script මගින් ලබා දෙන්න පුලුවන්.
02. ප්‍රයෝජනවත් විදියට තමන්ගේම Commands නිර්මාණය කරගන්න පුලුවන්.
03. කාලය ඉතුරු කර ගන්න පුලුවන්(එකම දේ නැවත නැවත type කර කර ඉන්නෙ නැතුව)
04. ස්වයංක්‍රීයව යම් දේවල් කරගැණීමට හැකි වීම.
  1. ස්වයංක්‍රීයව පද්ධති කටයුතු පාලනය කරගැනීමට හැකිවීම
ඔන්න ඔය වගේ දේවල් කර ගන්න පුලුවන් නිසා තමයි අපි shell Script ලියන්නෙ.

7.Shell සමග වැඩ පටන් ගැනීම.


                             මෙතන ඉදන් අපි shell වල වැඩ කිඩ පටන් ගන්නයි හදන්නෙ. අපි මේ වැඩ කරන්න use කරන්නෙ බාස් ශෙල් නෑ නෑ bash shell කියන වර්ගය.මෙතන ඉදන් ඉස්සරහට shell ලියන්න ,කියවන්න,රන් කරවන්න එකී මෙකී නොකී ගොඩක් වැඩ කරන්න තමයි හදන්නෙ ඒ නිසා හොදට තේරුම් අරගෙන වැඩේ කරගෙන යන්න.

8.කොහොමද මේ shell Script එකක් ලියන්නෙ ?

මේකට පියවර දෙකක් සපුර ගන්න ඔන.එව තමයි

 1.shell Script එක ලියාගන්න ටෙක්ස්ට් එඩිටර් එකක්-මම නම් මේකට use කරන්නෙ ubuntu වල තියෙන gedit කියන ටෙක්ස්ට් එඩිටර් එක ඔයාල use කරන OS එකේ තියෙන කැමති එකක් තෝර ගන්න.




2.තව දැනගන්න ඔන කොහොමද ලිනක්ස් වල file permissions වෙනස් කරන්නෙ කියල. මොකද ලියන sell script එක රන් කරන්න permissions එක ගන්න ඕන.

දැන් අපි පොඩ්ඩක් මේ linux file permissions ගැන කතා කරමු.

9. Linux file permissions

ලිනක්ස් (ගොඩක් දුරට UNIX System වලත්) වල ප්‍රධාන වශයෙන් user class තුනක් තියෙනව. user class කියල කිව්වෙ භාවිතා කරන පිරිස වෙන් කරල දක්වන්න පුලුවන් බෙදීමක් වගේ දෙයක්.
අපි බලමු මොනවද මේ user classes තුන කියල.

1.User (u)- මේකෙන් කියන්නෙ file එකේ අයිතිකෙනා ගැන(owner) file එක හදපු එක්කෙනා කියල හිතාගන්න.
2.Group (g)-මේකෙන් කියන්නෙ file එක access කරන අය. කෙනෙක් හදපු files වෙන අය use කරන්න පුලුවන්නෙ.
3.Other (o)-මේ කියන්නෙ උඩ කතා කරපු අය හැරුනාම අනිත් අය ගැන.

    ලිනක්ස් file permissions වෙනස් කරල අපට පුලුවන් උඩ ඉන්න තුන් ගොල්ලන්ට කරන්න පුලුවන් දේවල් පාලනය කරන්න.සරලවම ගත්තොත් මෙන්න මෙහෙමයි ඔන්න ඉන්නව file එකක් අයිති කෙනෙක් එයට පුලුවන් එයාගෙ file එක edit කරන්න write කරන්න. execute කරන්න පුලුවන් ජාතියෙ එකක් නම් එහෙමත් කරන්න. (කරන්න පුලුවන් ඔක්කොම ජාති කරන්න).දැන් බලන්න ඒ file එකම access කරන අය ගැන (Group කියන එකේ කස්ටිය) ඒ අයට පුලුවන් file එක execute කරන්නයි write කරන්නයි හැබැයි delete කරන්න බෑ. ඊළඟට Other කියන එකේ කස්ටියට පුලුවන් Read කරන්න විතරයි. උදාහරණයක් විදියට මෙහෙම හිතන්න ඔයාගෙ කම්පියුටරේ guest Account එකක ඉදන් සමහර file open කරන්න delete කරන්න Access කරන්න බෑ නේද ?අන්න ඒ වගේ කතාන්දරයක් තමයි මේකත්.
අපට පුලුවන් ලිනක්ස් වල තියෙන file එකක මේ permissions වෙනස් කරන්න ඒ කියන්නෙ කලින් කියපු තුන් ගොල්ලන්ට තියෙන වරප්‍රසාද වෙනස් කරන්න පුලුවන්.දැන් බලමු කොහොමද ඒව කරන්නෙ කියල.

අපිට file එකකට කරන්න පුලුවන් ප්‍රධාන දේවල් තුනක් තියෙනව ඒව තම

01.Read (r)
02.Write (w)
03.Execute (x)

වරහන් ඇතුලෙ තියෙන අකුරු වලින් කියන්නෙ කෙටි යෙදුම් කියල මතක තියා ගන්නකො.

File permissions mode තුනක් තියෙනව. ඒව තමයි

1.Linux Read mode permissions- file එකක් හරි directory එකක් හරි Read කරන්න දෙන අවසරය

2.Write mode permissions- file එකක් හරි directory එකක් හරි Write කරන්න දෙන අවසරය.

3.Execute mode permissions-file එකක් හරි directory එකක් හරි Execute කරන්න දෙන අවසරය.


ඔක්ටල් නම්බර් කතාවකුත් තියෙනව මේවත් එක්ක ඒකත් බලලම ඉම්මුකො

ඔක්ටල් කතාව මේකයි
අපි කලින් file එකකට කරන්න පුලුවන් දේවල් තුනක් ගැන කතා කරානෙ r,w,x කියල ඒ r,w,x ඔක්ටල් වලින් ඉදිරිපත් කරගන්න ඒවට මේ අගයන් දාගන්න

r =4
w=2
x =1

දැන් ඉතින් දැනගන්න ඕන 4 කිව්වොත් read , 2 කිව්වොත් write, 1 කිව්වොත් execute කියල.හරියට r , w , x වලට කෙටි නම් දැම්ම වගේ


අපි දැන් බලමු Linux Read Write අවස්ථාව ඔක්ටල් වලින් කොහොමද කියල

0+r+w+e =0+4+2+0 = 6 

**මේ තියන ගණිත කර්මෙ දැක්කහම බය වෙන්න එපා කරල තියෙන්නෙ read හා write වලට අපි දාගණිපු කෙටි නම් වල අගයන් එකතු කරපු එක. විතරයි.මුලට 0 දාගත්තෙ පාලුවට කියල හිතන්නකො.execute වලට 0 ආවෙ file එක execute කරන්න අවසර දෙන්නෙ නැති නිසා. **

පේනව නේද Read & Write අවස්ථාවෙ ඔක්ටල් අගය = 6

ඊළඟට බලමු read & execute අවස්ථාව

0+r+w+e = 0+4+0+1 =5

Read & execute අවස්ථාවෙ ඔක්ටල් අගය = 5

දැන් Read, Write & execute අවස්ථාව

0+r+w+e = 0+4+2+1 = 7

Read, Write & execute අවස්ථාවෙ ඔක්ටල් අගය = 7

ඔක්ටල් වල තියෙන්නෙ 0 ඉදල 7 වෙනකම් ඉලක්කම් ටික නෙ ඒ නිසා 7 න් එහා යන්නෙ නෑ කියලත් මතක තියා ගන්න.

කලින් කිව්ව permissions mode යොදාගෙන පොඩි වැඩක් කරල බලමු දැන්

ඔන්න හිතන්න මෙහෙම තියනව file එකක් ඒකෙ user(u) Read,Write & execute කියන permissions 3 නම දෙන්න ඔන. Group(g) ට දෙන්න ඔන Read & Write permissions දෙක Other (o) ට දෙන්න ඔන execute permissions එක විතරක් එතකොට මෙන්න මේ විදියට තමයි ගණනය කරන්න ඔන.

User = 0+r+w+x = 0+4+2+1 = 7
Group= 0+r+w+x = 0+4+2+0 = 6
Others = 0+r+w+x = 0+0+0+1 = 1

මේවගේම තවත් එකකුත් බලමු දැන්
file එකක Read,Write & execute කියන permissions u,g,o කියන තුන්ගොල්ලොන්ටම දෙන්න ඕන එකට ගණනය කිරීම කරන්න ඕන මෙහෙමයි.

User = 0+r+w+x = 0+4+2+1 = 7
Group= 0+r+w+x = 0+4+2+1 = 7
Others = 0+r+w+x = 0+4+2+1 = 7

මම හිතිනව ඔයාලට මම කියපු දේ තේරෙන්න ඇති කියල මේ විදියට අපට ඕන Permission එකක් හදා ගන්න පුලුවන්.
 

file Permissions හදා ගන්න හැටි next පාඩමෙන් කියන්නම්.