2011-12-26

Boot වෙන්නෙ නැද්ද? (GRUB Repair)


ගොඩ කාලෙකින් තමයි පොස්ට් එකක් දාන්නෙ. ශෙල් පාඩම ආයෙමත් පටන් ගන්නව ඉක්මනින්ම.
අද මම කියන්න යන්නෙ ලිනක්ක් os එක use කරන අයට පට්ට විදියට වැදගත් වන දෙයක් ගැන එකම කම්පියුටර් එකේ ලිනක්ස් හා වින්ඩොස් os දෙකම use කරන අයට මේක පට්ටම පට්ට විදියට වැදගත් වෙනව.

ඔයාලටත් මේ වගේ වැඩ වෙලා තියෙනවද



 
වින්ඩොස් ලිනක්ස් දෙකම තියෙන එකක මේක උනාම දෙකෙන් එකකට වත් යන්න ලැබෙන්නෙ නෑ මේක සිද්ධ වෙන්නෙ GRUB (GRand Unified Bootloader )කියන Boot loader එක මැකුනහම හරි වෙන මොකක් හරි සිද්ධියක් උනහම එතකොට boot වෙන්න ඔන මොන os එකද කියල කම්පියුටර් එකට හොයා ගන්න බැරි වෙනව. Grub වලින් තමයි multi os තියෙනකොට අවශය OS එක තෝරල boot කරන්න පහසු කම සලසල දෙන්නෙ.
දැන් බලමු කොහොමද මේක අවුල් උනොත් repair කර ගන්නෙ කියල.මුලින් මෙතෙන්ට ගිහින් මේ තියන .iso එක Download කරගෙන cd එකකට burn කරගන්න නැත්තම් bootable pen creator එකක් use කරල pen එකකට දාගන්න.


ඊළගට cd එක CD-ROM එකට දාල computer එක restart කරන්න. දැන් cd එක boot කරන්න එකොට පහල තියෙනව වගේ පෙනෙයි මෙතනින් තෝරන්න 32 bit 64 bit ද කියන එක ඔයාලගෙ computer එක අනුව

 
ඊළගට මේක පොර්ටබල් os එකක් විදියට LOAD වෙනව ලස්සන ඩෙස්ක්ටොප් එකකුත් එක්ක. මේකෙ තියන Main මෙනු එකේ තියනව Boot Repair කියල සොෆ්ට්වෙයාර් එකක්



ඒක ඔපන් කරල Recommended repair කියන එක තෝරල උඩ තියන පින්තුරෙ විදියට කරල apply කරන්න. ඊට පස්සෙ කම්පියුටර් එක restart කරල බලන්න පුලුවන්. තවත් මේකෙ තියන පට්ට වැදගත් දෙයක් තමයි OS-Uninstaller කියන tool එක මේකෙන් පුලුවන් computer එකේ දැනට තියෙන OS එකක් uninstall කරන්න.


 වැඩේ එල නම් කමෙන්ට් එකකුත් දාල යන්න.

 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
 sudo apt-get install -y boot-repair && boot-repair
 
මෙන්න මේ කමාන්ඩ් දෙක ලින්ක්ස් වල ටර්මිනල් එකේ රන් කරල boot-repair tool එක වෙනමම තමන් දෑන් ඉන්න OS එකට  ඉන්ස්ටොල් කර ගන්නත් පුලුවන් ඒත් CD එකකට Burn කරල තියන එක් තමයි ගොඩක් වටින්නෙ.


2011-11-11

ඔයාලගෙ Nokia දුරකතනයට ඇන්ඩ්‍රොයිඩ් දාගන්න කැමතිද? (Android for Nokia Phones)





ඇත්තම කිව්වොත් නොකිය phone එකකට ඇන්ඩ්‍රොයිඩ් දාන්න බැහැ. හැබැයි ඇන්ඩ්‍රොයිඩ් දැම්ම වගේ පොඩි ප්‍රෝඩාවක් කරන්න පුලුවන්. ප්‍රෝඩාවක් උනාට මේක සුපිරි ගණයේ එකක්. ඇන්ඩ්‍රොයිඩ් තියන phone එකක් use කරන අත්දැකීමම විදගන්න පුලුවන් මේකෙන්. (මේක them එකක් නෙවෙයි) පොඩි software එකක්. දැන් මම කියන්නම් කොහොමද ඒක දාගන්නෙ කියල.තව ටිකෙන් අමතක වෙනව කියන්න ඇන්ඩ්‍රොයිඩ් විතරක් නෙවෙයි ඔන නම් Apple mobile OS , windows mobile OS , Black Berry mobile OS , Ubuntu වගේ එවත් දාගන්න පුලුවන්. හරිම සරලයි.

    Symbian S60 5th Edition Software වලට සහය දක්වන phones වලට විතරයි මේක දාන්න පුලුවන්.( Google වල search පාරක් දාල බැලුවොත් අනික් versions හොයාගන්න බැරි වෙන එකක් නෑ)

    1. පහල link එකෙන් සොෆ්ට්වෙයා එක download කරගෙන extract කරගන්න. Download Click Me 

    2. දැන් ඒක ඔයාගෙ phone එකේ මෙමරි කාඩ් එකට කොපි කරන්න.

    3. ඔයා දාගනිපු folder එක ඇතුලෙ තියන Gdesk v0.33g Install SIS කියන folder එක ඇතුලට ගිහින් ඒකෙ තියන .sis ෆයිල් ඔක්කොම ටික ඉන්ස්ටෝල් කරන්න.(phone එකෙන් කම්පියුටර් එකෙන් නෙවෙයි)

      1. දැන් ඔයාලගෙ phone එකේ Applications වල installed apps. ෆොල්ඩර් එකට ගිහින් ඒකෙ තියන Gdesk කියන application එක ඔපන් කරන්න. දැන මේවගේ එකක් දකින්න ලැබෙයි.

      2. මේක උඩ ටච් කරාම එන මෙනු එකෙන් design කියන එක select කරන්න දැන මේ වගේ එකක් එනව.

      3. මේ මෙනු එකේ තියන Load Design කියන එක කියන එක select කරන්න.
      4. දැන් මෙමරි කාඩ් එක select කරල අපි download කරල phone එකට දාගනිපු folder එක ඇතුලෙ තියන Android 2.1.gdd කියන file එක open කරන්න.

      5. ඔන්න දැන් වැඩේ හරි දැන් ඔයාලට මෙන්න මේ වගේ දැක ගන්න පුලුවන්.


        දැන් කැමති විදියට customize කරගන්න. මොනා හරි අවුලක් උනොත ආයෙ කලින් විදියට Load Design ගිහින් Android 2.1.gdd කියන file එක open කරන්න. එතකොට ආයෙ මුල් තත්වෙට පත්වෙනව.

      6. මේ ලින්ක් එකෙන් ගිහින් තව තව Desing download කරගන්න.
        http://gdesk.wetpaint.com/page/GDesk+designs
     

2011-11-10

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



15.echo කමාන්ඩ් එක ගැන........

මේ කමාන්ඩ් එක අපි කලින් use කරානෙ. ඒකෙන් අපි කරේ අපට අවශ්‍ය දේවල් ප්‍රින්ට් කරගනිපු එක.මේකෙ තව වැඩ කෑලි වගයක් තියෙනව අපි බලමු ඒවත්.

මේක හරියටම use කරන්නෙ මෙහෙමයි.

echo [options] [string, variables...]

මේ options කියන තැනට දාන ඒව ගැන අපි බලමු දැන්.

echo -n
-n -මේකෙන් කියන්නෙ output එක තවත් අලුත් ලයින් එකකට යවන්න එපා කියල.

echo -e
-e - මේකෙන් කියන්නෙ පහල තියෙන backslash හා specials characters වලින් ඉදිරිපත් වෙන අර්ත දැක්වීම් සක්‍රිය වෙන්න කියල.

දැන් කලින් කියපු දෙක උදාහරණ වලින් පැහැදිලි කර ගනිමු.

echo “Myname is kamal”

මේක රන් කරහම ටර්මිනල් එකේ ඊළඟ ලයින් එකේ Myname is kamal කියල ප්‍රින්ට් වෙලා ආයෙ කර්සර් එක පහල ලයින් එකට ගියා නේද ?(කර්සර් එක ට වම් පැත්තෙන් තව කම්පියුටර් එකේ නම user ගෙ නම වගේ විස්තර වගයකුත් තියෙනව මම ඒව ගැන සලකන්නෙ නැතුව තමයි කිව්වෙ)


දැන් මේක කරල බලන්න
echo -n “Myname is kamal”
මේක රන් කරහම ටර්මිනල් එකේ ඊළඟ ලයින් එකේ Myname is kamal කියල ප්‍රින්ට් වෙලා කර්සර් එක එතන ඉස්සරහම බ්ලින්ක් වෙවී තිබුන නේද ?


-n මගින් new ලයින් එකකට යන එක නවත්තනව කියල තේරුනා නේද?

ඊළඟට බලමු -e ගැන 
 
අපි echo මගින් ප්‍රින්ට් කරන්න හදන String (අකුරු ඉලක්කම් අයත් වන data type එක) එක ඇතුලෙ තියෙන special characters (key bord එකේ තියෙන backspace,escape වගේ keys නිරූපණය කරන characters ) වල නිරූපණය සක්‍රිය කරන්න කියන එක තමයි -e මගින් කියන්නෙ.

echo “Myname is kamal”
මේක රන් කරහම එන output එක දන්නවනෙ අපි දැන් මේකට special character එකක් එකතු කරමු. back space එක නියෝජනය කරන \b කියන එක තමයි එකතු කරන්නෙ.
echo “Myname is kamal'\b'”

දැන් හරි නම් out එක එන්න ඔන Myname is kama කියල ඒ මොකද \b කියන special character එකෙන් නිතරම ඊට කලින් තියෙන අකුර මකන නිසා (back space key එක ඔබන කොට වෙන දේ) ඒත් එහෙම වෙලා නෑ out එක එන්නෙ “Myname is kamal\b” කියල ඒ කියන්නෙ special character එකට අදාල දේ වෙලා නෑ කියන එක. ඊළඟට මේක රන් කරල බලන්න

echo -e “Myname is kamal'\b'”
මේකෙදි නම් out එක එනව “Myname is kama” කියල -e යොදපු නිසා special character වලට අදාල නිරූපණ සක්‍රිය වෙලා.

මෙතන තියෙනව වැදගත් වන special character කිහිපයක්
\a alert (bell)
\b backspace
\c suppress trailing new line
\n new line
\r carriage return
\t horizontal tab
\\ backslash

මේව use කරල බලන්න ඔයාල.

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 "******"

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