Saturday, May 21, 2011

ලිනක්ස් සිංහලෙන් මුල සිට සරලව - Shell commands 2.

රායිට් ඔන්න Shell commands දෙවන කොටස ලියන්නයි යන්නෙ. පළවෙනි කොටස අවුරුද්දකට විතර කලින් නෙව ලියවුනේ. මතක නැති අය බලපු නැති අය බලල එන්න. ඔන්න ලනුව.

rmdir (remove directory) - මේ විධානය පාවිච්චි කරන්නෙ හිස් folder එකක් මකන්න. මතක තියාගන්න හිස් නොවන folder එකක් මේ විදිහට මකන්න බෑ. ඒකට යොදාගන්නෙ rm කියන විධානය ඒක ඉස්සරහට හම්බවේවි.

cp (copy) - folder එකක් හරි file එකක් හරි එක තැනක ඉඳල තව තැනකට පිටපත් කරන්න මේ විධානය යොදාගන්නවා. මේ විධානෙත් cp තනියම පාවිච්චි කරන්න පුළුවන් තනි file එකක් හරි archive කරපු(zip,tar,tar.bz වගේ) ගොනු පිටපත් කරන්න විතරයි. ඇතුලත තව file හරි folder හරි තියන folder එකක් මේ විධානෙන් copy කරන්න උත්සාහ කලොත් මේ error එක ලැබේවි.
cp: omitting directory SOMEDIRECTORY

ඉතින් අපි කොහොමද හිස් නොවන folder එකක් copy කරගන්නෙ. ඒකට -r කියන පරාමිතියත් එක්ක cp විධානය යොදන්න ඕන. මේ වගේ
ravinda@ravinda-laptop:~$ cp -r /opt/abc ~/Documents

මේ කියන්නෙ /opt වල තියන abc කියන folder එක ඒකෙ අන්තර්ගතයත් එක්ක home එකේ Documents වලට copy කරන්න කියල. ~ සලකුණ පහුගිය සටහනේ විස්තර කලා මතක ඇතිනේ. මේත් එක්කම තවත් වැදගත් වෙන අවස්ථා කීපයක් මතක් කරන්නම්. මේ විධානය බලන්න.


ravinda@ravinda-laptop:~/Documents$ cp -r /home/ravinda/Documents/abc ../Downloads

මේ විධානයේ පාවිච්චි කරල තියන .. කියන එකෙන් අදහස් කරන්නෙ වර්ථමානයේ terminal එකේ අපි ඉන්න folder එකට(අපි මෙතනම pwd ගැහුවොත් පෙන්නන තැන තමයි අපි ඉන්නෙ මතක ඇතිනේ) folder hierarchy එකේ එක පියවරක් ඉහිලින් තියන ගොනුව කියන එක. මේ උදාහරණයේ අපි ඉන්නේ /Documents තියන තැන නිසා .. කිව්වාම අදහස් වෙන්නේ ~ නැත්තම් මගේ home folder එක. ඉතින් මෙතනදි abc කියන ගොනුව copy වෙන්නෙ home/Downloads කියන තැනට. මේ විදිහට path එක දක්වනවට කියනවා relative path කියල මොකද එතනදි අපි දැනට ඉන්න තැනට සාපේක්ෂව තමා path එක ප්‍රකාශ කරන්නෙ. මෙහෙම කරාම තියන වාසිය තමයි අදාල file hierarchy එක තියනවනම් ඔනෑම තැනකද(වෙන පරිගනකයක උනත්) මේ path එක වලංගුයි. හැබැයි අනිත් විහිහ ඒ කියන්නෙ absolute path විදිහට path එක ප්‍රකාශ කරාම ඒක ඒ පරිගනකය මත විතරයි නිවැරදි වෙන්නෙ.

ravinda@ravinda-laptop:~/Documents$ cp -r /home/ravinda/Documents/abc .

මෙතනදි abc copy වෙන්නෙ current folder එකට ඒ කියන්නේ ~/Document වලට. පැහැදිලි ඇති කියල හිතනවා. ලටපගන්න නම් එපා. :)

mv (move) - මේ විධානය dual purpose. නමෙන්ම කියවෙන විදිහට මෙයා file move කරන්න යොදාගන්නව වගේම file rename කරන්නත් යොදාගන්නවා. මේකෙ නම් අර omitting directory ප්‍රශ්නෙ නෑ. හිස් නොවන ගොනු උනත් move කරන්න පුළුවන්.

ravinda@ravinda-laptop:~/Documents$ mv abc ../Downloads

ආයෙ කියන්න දෙයක් නෑනෙ පැහැදිලි ඇති මම හිතන්නෙ. දැන් මෙන්න මෙහෙමයි rename කරන්න මේ විධානය යොදාගන්නෙ. මගේ home එකේ තියන abc කියන file එක xyz කියල rename කරනවා කියල හිතමු.

ravinda@ravinda - laptop :~$ mv abc xyz

folder එකක් rename කරන්නෙත් ඒ විදිහටම තමයි. මම root එකේ ඉඳන් මගේ Document වල තියන Linux කියන folder එක GNULinux කියල rename කරනව නම්

ravinda@ravinda - laptop :/$ mv /home/ravinda/Documents/Linux /home/ravinda/Documents/GNULinux

cat - file එකක අන්තර්ගතය එක පාරම screen එකට මුදා හැරීමයි මේ විධානයෙන් කරන්නෙ. මේකෙන් file read කරන්නත් පුළුවනි. පොඩි ප්‍රශ්නෙකට තියෙන්නෙ මේ එකවර මුදාහරින එක. ඒ කියන්නෙ file එක කොච්චර ලොකු උනත් මෙයා ඒ ඔක්කොම එක ප්‍රවාහයට තිරයට යවනවා. ඉතින් දිග file එකක් cat කරොත් අපිට බලාගන්න පුළුවන් ඒකෙ අග ටික විතරයි. මොකද තිරයේ ඉඩ ප්‍රමාණය අනුව ඉතුරු ටික උඩට යනවනේ. මේ නිසා මේ විධානය ගොඩක් පාවිච්චි කරන්නෙ file read කරන්න නෙමෙයි. pipe කියන අංගය හරහා තවත් විධානයකට file එකක අන්තර්ගතය යවන්න මේක ගොඩක් වෙලාවට යොදාගන්නවා. pipe ගැන අපි පස්සෙ කතා කරමු. මම example.cpp කියල සරල c++ file එකක් cat කලේ මෙහෙමයි.

ravinda@ravinda-laptop:~/Documents$ cat example.cpp #include using namespace std; int main (){ cout << "Hello World" << endl; } ravinda@ravinda-laptop:~/Documents$

more - cat වලින් file එකක් කියවන්න සාර්ථකව යොදාගන්න බැරි නිසා ඒ කාර්ය කරන්න පුළුවන් විධානයක් තමයි more මේකෙන් වරකට screen එකට සරිලන ප්‍රමාණය බැගින් file එකක අන්තර්ගතය මුදා හරිනවා. අපිට පුළුවන් space button එක press කරලා ඊළග screen එකට යන්න.

ravinda@ravinda-laptop:~$ more example.cpp

ls - පහුගිය සටහනෙන් මේ list ගැන කිව්වත් මේකෙ වැදගත් යෙදීම් කිහිපයක් ගැන කියන එක අතපසු උනා. ඒ ටික මේකෙ ලියන්නයි හිතුවේ.

* ls filename - යම් file එකක් අදාල directory ය තුල තියනවද කියල බලාගන්න මේ විදිහට ls විධානය යොදාගැනීමෙන් පුළුවන්. හැබැයි මෙතනදි අදාල extention එකක් එක්කම file name එක දෙන්න වෙනවා. අදාල ගොනුවේ ඒ file එක තියනවනම් ඒ නමින්ම result එකත් නැත්නම් No such file or directory යනුවෙනුත් output එක දේවි.

උදා- abc කියන file එක තිබෙන විට
ravinda@ravinda-laptop:~$ ls abc.txt abc.txt

file එක නොමැති නම්
ravinda@ravinda-laptop:~$ ls abc.txt ls: cannot access abc.txt: No such file or directory

*ls *.xxx - යම් extension එකක් සහිත file සියල්ල search කරගන්න මේ විදිහට පුවවන්.

උදා- අදාල ගොනුවේ ඇති txt file සියල්ල බලා ගැනීමට
ravinda@ravinda-laptop:~$ ls *.txt
abc.txt doc.txt

*ls -lt - සියළු file වල විස්තර දින පිළිවෙලට පෙළගස්වා පෙන්වන්න

*ls -lrt - file වල විස්තර දිනය අනුව විරුද්ධ පිළිවෙලට(කලින්ම දිනය සහිත ගොනුව මුලින්ම) පෙන්වන්න.

*ls -d directory - අදාල නම සහිත directory එක තිබේදැයි බලන්න.

*ls -p - මේකත් ටිකක් වැදගත් එකක්. මෙතනදි result වල නම් අගට meaning characters යොදල පෙන්නන්නෙ. ඒ කියන්නෙ directory යක් නම් අගට / ලකුණ යොදනවා.

උදා-
ravinda@ravinda-laptop:~$ ls -p
algo/ Documents/ Music/ Public/
algo.tar.gz Downloads/ NetBeansProjects/ sges-v3/
Desktop/ examples.desktop Pictures/ Videos/

*ls -R - මේ විදිහට sub directory වල තියන files නුත් පෙන්නන්න list කරන්න පුළුවන්.

දැන් නම් මේකට ඇති වගේ. අනික මාස ගානක් තිස්සෙනේ ලියන්නෙ. cryptography ගැන ලිපියක් ලියන්න හිතිලයි තියෙන්නෙ ඒත් වෙලාව තමා අවුල. බලමුකෝ. එහෙනම් ආයෙ හමුවෙමු. ආයුබෝවන්.