2013-11-23

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


    25.පයිප්ප (Pipes).

පයිප්ප කිවිවෙ වතුර යන ඒව නම් නෙවෙයි. මේවයි යන්නෙ කමාන්ඩ්. තේරුනේ නැද්ද? මෙහෙමයි අපි මේ පයිප්ප කියන ඒවයින් කරන්නෙ එක කමාන්ඩ් එකක output එක තවත් කමාන්ඩ් එකක් ඉන්පුට් එකකට ලබාදෙන එක. මේකෙ තියන විශේෂත්වය තමයි එහෙම වෙනකොට කිසිම temporary file එකක් හැදෙන්නෙ නැති වීම (මෙහෙම කියන්නෙ පළමු කමාන්ඩ් එක මගින් දෙන output එක කිසි තැනක save කරගන්නෙ නැතුව කෙලින්ම දෙවනි කමාන්ඩ් එකේ input එකට ලබාදෙන නිසා ). අපට මේක use කරන්නෙ පුලුවන් program එකක out put එක තවත් program එකක ඉන්පුට් එකට සෙට් කරවන්න ටෙම්පරි file හදන්නෙ නැතුව.


උඩ තියන පින්තුරෙන් ඒ ගැන අදහසක් ගන්න උත්සාහ කරන්න.
මේ Syntax එක use කරන්නෙ මේ විදියට.
Command 1 | Command 2

මෙන්න මේ උදාහරණ බැලුවහම හරියටම තේරුම් ගන්න පුලුවන් වේවි.

      1. ls | more –
        ls කමාන්ඩ් එකෙන් වෙන දේ දන්නවනෙ. more කියන කමාන්ඩ් එකත් එක්ක combine කරහම වෙන්නෙ මෙහෙම වැඩක් අපි හිතමු අපි files හා folders ගොඩක් තියන directory එකක ඉදන් ls type කරා කියල එතකොට මෙන්න මේවගේ result එකක් තමයි ටර්මිනල් එකේ Display වෙන්නෙ.


අපි ls | more කියන විදියට රන් කරොත් මෙන්න මේවගේ result එකක් තමයි ලැබෙන්නෙ.කමාන්ඩ් දෙකක එකතුවකින් තමයි මේ result එක ලැබුනෙ.

පෙන්නන තියන දේවල් ලිස්ට් එකක් විදියට පෙන්නනන එක තමයි විශේෂත්වය. එහෙම පෙන්නන්න Screen එක මදිනම් --More-- කියන එක උඩ enter button එක එබීමෙන් ඊළඟ ටික බලන්න පුලුවන්.

2. who | sort 
who කියන කමාන්ඩ් එකෙන් ලැබෙන්නෙ user Account ප්‍රමාණය. Sort කියන කමාන්ඩ් එකත් කලින් use කරල තියෙනව ඒකෙන් වෙන්නෙ අනුපිළිවෙලකට සැකසෙන එක.මේ කමාන්ඩ් එක රන් කිරීමෙන් sort උන user Account ප්‍රමාණය බලා ගන්න පුලුවන්.


3.who | sort > user_list
කලින් කමාන්ඩ් එක මගින් උන දේම තමයි සිද්ධවෙන්නෙ. හැබැයි output එක write වෙන්නෙ ඔයා දැනට ඉන්න ඩිරෙක්ටරි එකේ user_list කියල හැදෙන file එකේ.( > ,>> ,< මේව මතකයිනෙ redirection වලදි කරේ )

4. who | wc -l 
wc කියන කමාන්ඩ් එකෙන් යමක lines ප්‍රමාණය,වචන,අකුරු වගේ ඒවගෙ count එකක් ගන්න පුලුවන්.භාවිතා කරන හැටි පහල තියන ඒව් මගින් ඉගෙන ගන්න.
wc -c :-මේකෙන් bytes වල එකතුව ගන්න පුලුවන්
wc -m :-අකුරු වල එකතුවක් ලබා ගන්න පුලුවන්.
wc -C :- wc -m වලින් ලැබුන ප්‍රතිඑලයම තමයි.
wc -l : lines වල එකතුව.
wc -w : අකුරු අතර තියන හිස් අවකාශය(white space) count කරනව.

who | wc -lවලින් පෙන්නන්නෙ ලයින් ප්‍රමාණෙ count එකusers 5ක් හිටියොත් රිසල්ට එක 5 කියල පෙන්නනෙ. ඔයාලගෙ ඉන්න users ප්‍රමාණයෙ එකතුවක් දකින්න ලැබෙයි.

  1. ls -l | wc -l
මේක ඔයාල කරල බලලම තේරුම් ගන්න හැම එකම කියල දෙන එක හොඳ නෑ නෙ.



Share:

2013-10-12

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






  1. ඇයි මේ Command Line arguments අවශ්‍ය වෙන්නෙ.
ප්‍රධාන කාරණා දෙකක් තියෙනව.
      1. කමාන්ඩ් එකට අවශ්‍ය option එකක් ලබා දීමට.
        echo -e “mad”
        මේකෙ මේ -e කියල තියෙන්නෙ පළමු argument එක ඒක echo කියන command එකේ option එක.
      2. කමාන්ඩ් එකට මොන files reading and writing කරන්න ඕන කියල ලබා දෙන එක.
        rm කියන කමාන්ඩ් එකෙන් පුලුවන් file එකක් remove කරන්න ඒ කිව්වෙ delete කරන්න ඉතින් එහෙම කරන්න මොන file එකද අයින් කරන්න ඔන කියල කමාන්ඩ් එකට දෙන්න ඔන. ඒක කරන්නෙ මෙහෙමයි.
rm file එකේ නම
rm filename
ඊළඟට බලමු කොහොමද command line arguments අපේ shell ස්ක්‍රිප්ට් එකට pass කරන්නෙ කියල.
අපි හදපු my.shell කියල ශෙල් script එකක් තියනව කියල හිතමු. දැන් ටර්මිනල් එකෙන් ඒක රන් කරමු 24 කියන argument එකත් pass කරගෙන.
./my.shell 24
මේවගේ අපට කැමති arguments ගණනක් pass කරන්න පුලුවන්.ඊළඟට බලමු කොහොමද අපි ටර්මිනල් එකෙන් පාස් කරපු arguments ශෙල් එක ඇතුලෙදි අල්ල ගන්නෙ කියල.අපි හිතමු අපි අපි argument තුනක් පාස් කරා කියල ඒ තුන අපට $1 , S2 , $3 කියල හදා ගනිපු වේරියබල් තුනකින් ඒ පාස් කරපුව අල්ල ගන්න පුලුවන්. සරලවම කිව්වෙත් $1 කියල හදපු වේරියබල් එකට පළමු argument එකත් $2 ට දෙවනි argument එකත් S3 ට තුන්වෙනි argument එකත් assign වෙනව.තවමත් පැහැදිලි නැත්තම් මේ උදාහරණය බලන්න.


අපි මුලින්ම හදාගනමු my.shell කියල script එකක් ඒකෙ මෙන්න මෙහෙම ටයිප් කරල save කරගන්න.
#########################################

# gedit my
#!/bin/bash
# Catch arguments
# sh scriptname 1 2 3

echo "My 1st Argument is : $1"
echo "My 2nd Argument is : $2"
echo "My 3rd Argument is : $3"
#########################################

දැන් ටර්මිනල් එකේ මේක රන් කරනකොට මෙන්න මේ විදියට argument තුනකුත් එක්ක රන් කරන්න.
./my.sh 5 9 4
resutl එක මෙන්න මේ විදියට පෙනේවි.

My 1st Argument is : 5
My 2nd Argument is : 9
My 3rd Argument is : 4 
 
අපි පාස් කරපු එක shell එක ඇතුලෙදි අල්ලගෙන ප්‍රින්ට් කරපු එක තමයි මෙතනදි සිද්ද උනෙ.තව වැදගත් වෙන දේවල් කිහිපයක් බලමු ඊළඟට
01. $0 කියන වේරියබල් එකක් හැදුවොත් ඒකට assign වෙනව shell එකේ නම.

02.$* හරි $@ කියන ඒවයින් ටර්මිනල් එකෙන් එවන argument ඔක්කෙම එක පාරට අල්ල ගන්න පුලුවන්.

මේ උදාහරන කරල බලන්න ඒවයින් තේරුම් ගන්න පුලුවන් ලේසියෙන්ම.

Arguments කැමති ගානකුත් එක්ක මේක රන් කරන්න.

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

# gedit my
#!/bin/bash
# Catch arguments
#
echo "My Arguments are : $@"
#########################################



Arguments තුනක් එක්ක මේක රන් කරන්න.

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

# gedit my
#!/bin/bash
# Catch arguments
#
echo "My Argument name is : $0"
echo "My Arguments are : $1"
echo "My Arguments are : $2"
echo "My Arguments are : $3"
#########################################

තව මතක තියා ගන්න ඕන කරුණක් තමයි $0,$2,$3 කියල අර්ගියුමන්ට් අල්ල ගන්න වේරියබල් අපට script එක ඇතුලෙ ආයෙ භාවිතා කරන්න බැරි බව.

24 .Redirection (ප්‍රතිදිශාව). 

 
මේ කතන්දරෙන් කියන එකත් ඒ තරම් අමාරු දෙයක් නෙවෙයි අපි බලමු දැන් ඒ ගැන. අපි සාමාන්‍යයෙන් මොකක් හරි කමාන්ඩ් එකක් රන් කරපුවහම ඒකෙ ප්‍රතිඑලය ටර්මිනල් එකේ ප්‍රින්ට් වෙන එකනෙ වෙන්නෙ. හොඳම උදාහරණෙ තමයි ls කමාන්ඩ් එක එක ටයිප් කරහම ඔයලට ටර්මිනල් එකේම අදාල out put එක පෙන්නන එක. අපට පුලුවන් ඔන්න ඔය දෙන out put එක අපි හදාගනිපු file එකකට අරගන්න, එහෙමත නැත්තම් file එකක් read කරල එකෙ තියන ඒව අරගෙන ටර්මිනල් එකට ලබා ගන්න. ඔන්න ඔය කතාවට තමයි redirection කියල කියන්නෙ.
ඔන්න බලන්න එක කරන හැටි.මුලින්ම ඔය දැන් ඉන්න directory එකේ man.txt කියල text file එකක් හදාගන්න. ඊළඟට ටර්මිනල් එකේ මෙහෙම ටයිප් කරල එන්ටර් ඔබන්න . (ටර්මිනල් එකෙනුත් ඒ directory එක ඇතුලෙ ඉන්න ඔන. )

ls > man.txt


දැන් ඔයාල man.txt කියන file එක ඔප්න් කරල බැලුවෙත් ඔයාලට පෙනෙයි ls මගින් ටර්මිනල් එකේ ටයිප් වෙන්න ඕන ටික man.txt කියන file එකේ save වෙලා තියෙන බව.

ලේසි ක්‍රමේ : - කලින් කරා වගේ මුලින් man.txt කියන file එක හදල ඉන්න ඔන නෑ. ඔය ls > man.txt කියන කමාන්ඩ් එක නිකම්ම ටර්මිනල් එකේ ටයිප් කරහම man.txt එක ඔටෝ හැදිල ඒකෙ ls මගින් අවශ්‍ය දේවල් ටික ලියවෙනව.

ප්‍රධාන Redirection සලකුණු (symbols) තුනක් තියෙනව.ඒව තමයි

      1. >
      2. >>
      3. <
        අපි දැන් බලමු ඒවයි තියෙන වැඩ කිඩ ටික.

          1. > - මේක ඔයාල කරල බැලුවනෙ. මේ ලකුණ යොදා ගත්තම හැම තිස්සෙම write කරන්න ඔන file එක අලුතෙන්ම හැදෙනව. කලින් එහෙම file එකක් තියෙනම් කිසිම කතාවක් නැතුව ඒක overwrite වෙනව.කරලම බලන්නකො.

          2. >> - මෙන්න මේවිදියට තමයි මේක භාවිතා කරන්නෙ.

            ls >> fileName

            මේකෙ තියන විශේෂත්වෙ තමයි කලින් එකේ වගේ overwrite වෙන්නෙ නැතුව එකම file එක write වෙන එක. ඒ කිව්වෙ මෙහෙමයි අපි හිතමු අපි write කරන්න ඉන්න file එක ඇතුලෙ කලින් save කරපු තව මොනව හරි දේවල් තියෙනව කියල ඒව වෙනස් නොවී ඒවට යටින් අලුත් දේවල් ටික save වෙන එක.ඉතින් මේකෙන් පුලුවන් කලින් දේවලුත් එක්ක අලුත් දේවලුත් තියා ගන්න.

          3. < - මේකෙන් තමයි file එකක තියෙනෙ ඒව read කරන වැඩේ කරන්නෙ.
            එක කරන්න පුලුවන් මෙහෙම. මුලින්ම හදන්න මොනව හරි ටයිප් කරපු දේවල් තියෙන ටෙක්ස්ට් file එකක් ඒකෙ නම දෙන්න my.txt කියල දැන් ටර්මිනල් එකෙන් එක තියන directory එකට ගිහින් මෙන්න මෙහෙම ටයිප් කරල රන් කරන්න.

            cat < my.txt
cat කියන කමාන්ඩ් එකෙන් file දෙකක් මූට්ටු කරන්නයි එව ඇතුලෙ තියන ඒව ප්‍රින්ට කරන්නයි පුලුවන්.
මෙව්ව ගැන වැඩි විස්තර පස්සෙ පස්සෙ දැන ගන්න පුලුවන්.
දැන් මේවයින් පොඩි උදාහරණයක් බලමු.
ටර්මිනල් එක ඔපන් කරල මෙන්න මේ කමාන්ඩ් එක රන් කරන්න.

cat > myfile.txt

එතකොට කර්සර් එක බිලින්ක් වෙවී තියෙනව එතකොට ඔයාල ඔය පහල තියෙන පින්තුරෙ වගේ ඔය නගර වල නම් ටික එන්ටර් කරල ඉවරවෙලා CTRL + D ඔබල save කරන්න.



 දැන් ඔය ඉන්න directory එකේ ඒ නගර ටික save උන myfile.txt කියල file එකක් හැදිල ඇති. අපට ඔන ඒ file එකේ තියන නගර වල නම් alphabet එකේ පිලිවෙළට හදන්න. ඒකට කරන්නෙ මෙන්න මේ වැඩේ.මෙන්න මේ කමාන්ඩ් එක රන් කරන්න.

sort < myfile.txt > sorted
ඊළඟට මේක රන් කරන්න
cat sorted
එතකොට sort උන පිලිවෙලට ප්‍රතිඑලය දැකගන්න පුලුවන්. තවත් එකක් තමයි sorted කියල file එකකුත් හැදිල තියෙන බව දකින්න පුලුවන් අදාල directory එකේ .ඒකෙ තමයි sort උන ලිස්ට් එක සේව් වෙලා තියෙන්නෙ.

තියෙන කමාන්ඩ් එක රන් කරහම වෙන්නෙ myfile.txt එකේ තියෙන ඒව read කරල sort කරල sorted කියන නමින් file එකක් හදල ඒකට සේව් කරන එක.
sort -කියන කමාන්ඩ් එක නිතරම අනුපිලිවෙලට සකසන දේවල් වලට භාවිතා කරන්න පුලුවන්.

 

Share:

2013-07-17





එන්න ඔබගේ ලිනක්ස් පිළිබද දැනුම වැඩි කරගන්න. නොදන්න දේවල් ගැන දැනගන්න තමන් දන්න දේවල් අනිත් අයත් එක්ක බෙදාහදා ගන්න අපේ open source forum එකට එකතු වෙන්න.
www.linuxlanka.com
Share:

2013-02-02

windows share මවුන්ට් කරමු full permission එක්ක.




මම අද මේ කියන වැඩේ නෙට්වර්ක් වල වැඩ කරන අයට ගොඩක් වැදගත් වෙයි.විශේෂයෙන්ම ලිනක්ස් හා වින්ඩෝස් computer දෙවර්ගයම තියන නෙට්වර්ක් වල වැඩ කරන අයට ගොඩක්ම වැදගත් වෙයි.අපට පහල තියෙන කමාන්ඩ් එකෙන් පුලුවන් windows computer එකක තියන share එකක් අපේ ලිනක්ස් computer එකට mount කරගන්න.

 sudo mount -t cifs //192.168.0.3/Tutorials -o username=pc,password=mypw /mnt/wshares

 cifs - නෙට්වර්ක් file system එක මේ වෙනුවට smbfs කියල එකකුත් තියනව ඒක ටිකක් පරනයි.
 //192.168.0.3/ - mount කරගන්න ඕන computer එකේ ip එක.
 Tutorials - mount කරගත යුතු folder එක.
  -o username=pc,password=mypw - windows computer එකේ un හා password එක.
 mount කරන ස්ථානය. (file system එකේ mnt ෆෝල්ඩරය තුල ඇති මා සාදාගත් wshares ෆෝල්ඩර් එක)

මේකෙන් share එක mount උනාට අපට share එකේ write permssion එක ලැබෙන්නෙ නෑ. එහෙම ලබාදීල තිබුනත් වින්ඩෝස් වලදි. :D
අපි හිතමු අපිට නෙට්වර් එකේ ඉදගෙන eclips හෝ netbeans project එකක් එහෙම edit කරන්න ඕන කියල,වින්ඩෝස් share එකක තියන.
එතකොට edit කරන්න තියා project එක බලන්න වත් බෑ මොකද netbeans හෝ eclips වල open dialog box වල network shares පෙන්නන්නෙ නැති නිසා.
දැන් මම කියන්නම් කොහොමද මේක write permission එකත් එක්ක file system එකේ කොහේට හරි mount කරගන්න ඕන කියල. පහල තියන කමාන්ඩ් එකෙන් ඒක පුලුවන්

sudo mount -t cifs //192.168.0.3/Tutorials -o username=pc,password=mypw,rw,gid=500,uid=1000,umask=0000 /mnt/wshares

කලින් එකම තමා පොඩ්ඩක් කැලි වැඩියි.

rw - read / write අවසර
GID- Group identification number
uid  - user id එක මෙතනට තමන්ගෙ uid එක දෙන්න ඕන. ඒක බලාගන්න terminal එකේ id -u username කමාන්ඩ් එකෙන් පුලුවන් username කියන තැනට
තමන් ලොග් වෙලා ඉන්න user account එකේ නම දෙන්න.
umask - file permission ලෙවෙල් එක.

උඩ තියන command එක හරියට ගැහුව නම් ඊළඟට තමන් log වෙලා ඉන්න Account එකේ පාස්වර්ඩ් එක අහවි දැන් ඒක ලබා දීල /mnt/wshares වලට ගිහින් බැලුවොත් mount උන ඒව පෙනෙයි(තමන් mount කරගනිපු තැන.).

අපි ගියා. bye
 තව ටිකෙන් අමතක වෙනව unmount කරගන්න කමාන්ඩ් එක
sudo umount /mnt/wshares
Share:

2013-01-02

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


  1. ඇයි මේ Command Line arguments අවශ්‍ය වෙන්නෙ.

ප්‍රධාන කාරණා දෙකක් තියෙනව.
      1. කමාන්ඩ් එකට අවශ්‍ය option එකක් ලබා දීමට.
        echo -e “mad”
        මේකෙ මේ -e කියල තියෙන්නෙ පළමු argument එක ඒක echo කියන command එකේ option එක.
      2. කමාන්ඩ් එකට මොන files reading and writing කරන්න ඕන කියල ලබා දෙන එක.
        rm කියන කමාන්ඩ් එකෙන් පුලුවන් file එකක් remove කරන්න ඒ කිව්වෙ delete කරන්න ඉතින් එහෙම කරන්න මොන file එකද අයින් කරන්න ඔන කියල කමාන්ඩ් එකට දෙන්න ඔන. ඒක කරන්නෙ මෙහෙමයි.
rm file එකේ නම
rm filename
ඊළඟට බලමු කොහොමද command line arguments අපේ shell ස්ක්‍රිප්ට් එකට pass කරන්නෙ කියල.
අපි හදපු my.shell කියල ශෙල් script එකක් තියනව කියල හිතමු. දැන් ටර්මිනල් එකෙන් ඒක රන් කරමු 24 කියන argument එකත් pass කරගෙන.
./my.shell 24
මේවගේ අපට කැමති arguments ගණනක් pass කරන්න පුලුවන්.ඊළඟට බලමු කොහොමද අපි ටර්මිනල් එකෙන් පාස් කරපු arguments ශෙල් එක ඇතුලෙදි අල්ල ගන්නෙ කියල.අපි හිතමු අපි අපි argument තුනක් පාස් කරා කියල ඒ තුන අපට $1 , S2 , $3 කියල හදා ගනිපු වේරියබල් තුනකින් ඒ පාස් කරපුව අල්ල ගන්න පුලුවන්. සරලවම කිව්වෙත් $1 කියල හදපු වේරියබල් එකට පළමු argument එකත් $2 ට දෙවනි argument එකත් S3 ට තුන්වෙනි argument එකත් assign වෙනව.තවමත් පැහැදිලි නැත්තම් මේ උදාහරණය බලන්න.


අපි මුලින්ම හදාගනමු my.shell කියල script එකක් ඒකෙ මෙන්න මෙහෙම ටයිප් කරල save කරගන්න.
#########################################

# gedit my
#!/bin/bash
# Catch arguments
# sh scriptname 1 2 3

echo "My 1st Argument is : $1"
echo "My 2nd Argument is : $2"
echo "My 3rd Argument is : $3"
#########################################

දැන් ටර්මිනල් එකේ මේක රන් කරනකොට මෙන්න මේ විදියට argument තුනකුත් එක්ක රන් කරන්න.
./my.sh 5 9 4
resutl එක මෙන්න මේ විදියට පෙනේවි.

My 1st Argument is : 5
My 2nd Argument is : 9
My 3rd Argument is : 4
අපි පාස් කරපු එක shell එක ඇතුලෙදි අල්ලගෙන ප්‍රින්ට් කරපු එක තමයි මෙතනදි සිද්ද උනෙ.තව වැදගත් වෙන දේවල් කිහිපයක් බලමු ඊළඟට
01. $0 කියන වේරියබල් එකක් හැදුවොත් ඒකට assign වෙනව shell එකේ නම. 
02.$* හරි $@ කියන ඒවයින් ටර්මිනල් එකෙන් එවන argument  
   ඔක්කෙම  එක පාරට අල්ල ගන්න පුලුවන්.

මේ උදාහරන කරල බලන්න ඒවයින් තේරුම් ගන්න පුලුවන් ලේසියෙන්ම.

Arguments කැමති ගානකුත් එක්ක මේක රන් කරන්න.

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

# gedit my
#!/bin/bash
# Catch arguments
#
echo "My Arguments are : $@"
#########################################



Arguments තුනක් එක්ක මේක රන් කරන්න.

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

# gedit my
#!/bin/bash
# Catch arguments
#
echo "My Argument name is : $0"
echo "My Arguments are : $1"
echo "My Arguments are : $2"
echo "My Arguments are : $3"
#########################################

තව මතක තියා ගන්න ඕන කරුණක් තමයි $0,$2,$3 කියල අර්ගියුමන්ට් අල්ල ගන්න වේරියබල් අපට script එක ඇතුලෙ ආයෙ භාවිතා කරන්න බැරි බව.

නැවත හමුවෙමු.  

කට්ටිය අපේ ලිනක්ස් Communtiy  එකට උදව් දෙන්නත් ඕන කියල මතක තියාගන්න.

 

Share: