Sunday, March 28, 2010

ලිනක්ස් සිංහලෙන් මුල සිට සරලව - මොකද්ද මේ Shell


ඉතින් ලිනක්ස් ගැන ලිපි පෙලේ තව ලිපියක් ලියන්නයි මේ සූදානම. මුලින් මේ ලිපි පෙල ගැන ගොඩක් අය උනන්දුවෙන් හිටියත් අන්තිම ලිපි දෙකට වැඩි ප්‍රතිචාරයක් නෑ. ඒ නිසා මටත් කම්මැලි හිතිලයි තිබුනේ ආයෙ ලියන්න. මේ දවස් වල කැම්පස් එකේ වැඩත් වැඩි නිසා ඊළඟ ලිපිය ලියන එක දවසින් දවස කල් යමිනුයි තිබුනේ. වැඩිපුර දවසක නිවාඩුවකුත් එක්ක ගෙදර ආවහම හිතුවා මේක ලියල දානව කියල.

හරි Shell කිව්වහම මොකද්ද මුලින්ම මතක් වෙන්නේ Shell scripting, Shell commands එහෙම නේද? මොකද්ද මේ shell එක කියන්නේ. මේ රූප සටහන බලන්නකෝ.
Kernel එක කියන්නේ Linux වල තියන වැදගත්ම දේ. ඇත්තටම මෙහෙයුම් පද්ධතිය කියන්නෙ මේ kernel එකට. අනෙක් මෘදුකාංග ක්‍රියා කරන්නේ මේ kernel එක හරහා දෘඩාංග සහය ලබා ගනිමින්. මේ kernel එකට විචිත්‍රක අතුරු මුහුණත (GUI) වගේම සාමාන්‍ය ලිනක්ස් මෙහෙයුම් පද්ධතියක් එක්ක ලැබෙන මෘදුකාංග අයිති වෙන්නේ නෑ. ඒව ලැබෙන්නෙ GNU(GNU is Not Unix) කියන ව්‍යාපෘතියෙන්. මේ දෙක ඒ කියන්නේ Linux kernel එක සහ GNU මෘදුකාංග එකතු වෙලයි GNU/Linux මෙහෙයුම් පද්ධතියක් නිර්මාණය වෙන්නෙ. ඒ අතුරු කතාවක්. ඉතින් පරිගනකයේ දෘඩාග හසුරුවන්නේ මේ kernel එකනේ. kernel එක එක්ක ගනුදෙනු කරන කෙනා තමයි shell කියන්නේ. ඉතින් අපිට මෙහෙයුම් පද්ධතියෙන් යම් දෙයක් කරගන්න ඕන නම් මේ shell ට කියල තමයි කරගන්න වෙන්නේ. මෙයාට කියනව Command line interpreter කෙනෙක් කියලත්. Interpreter කියන්නේ පරිවර්තකයා නැත්තම් තෝල්කයා කියන එකනේ. පරිගනකය දන්නෙ machine language එක ඒ කියන්නේ 010010101110 වගේ දෙකේ පාදයෙන් නැත්නම් binary වලින් කියන දේවල් විතරයි. අපිට ඒව තේරෙන්නෙ නෑනෙ අපි තෝරගත්තු විධාන වලින් කෙරෙන්න ඕන දේ shell එකට කිව්වහම එයා ඒක kernel එක හරහා පරිගනකයට කියල අදාල වැඩේ කරල දෙනවා.
shell කීපයක් ලිනක්ස් මත භාවිතා වෙනවා. Bourne shell කියන්නේ දැනට Linux මත බහුලවම භාවිතර වෙන shell එකෙ මේක. අනික් ඒවට වඩා හොඳ shell එකක් විදිහට bourne shell නැත්තම් bash shell එක හඳුන්වනවා. තව C shell, sh shell වගේ shell කීපයක්ම තියනවා. prompt එකේ echo $SHELL කියල දුන්නම දැනට run වෙන shell එක මොකද්ද කියල දැන ගන්න පුළුවන්. මේ shell එක බොහොම powerful දෙයක්.(windows command prompt එක වගේ කසි කබලක් නෙමේ) ගොඩක් ක්‍රමලෙඛකයන් තාමත් GUI එක භාවිතා නොකර shell එකේ තමයි තමන්ගේ කටයුතු කරන්නෙ. GUI එකේ කරන සමහර දේවල් ඊට ගොඩක් ඉක්මනට shell එකේ කරගන්න පුළුවන්. ඒ වගේම GUI එකේ කරන්න බැරි shell එකේ පමණක් කරන්න පුළුවන් ගොඩක් දේවල් තියනවා. මේ නිසා Linux ඉගන ගන්න නම් shell එක ගැන දැන ගැනීම ඉතාම වැදගත්.

ඉතින් අපි කොහොමද මේ shell එක බලා ගන්නෙ. GUI එකක් නැතුව අපි මෙහෙයුම් පද්ධතිය ස්ථාපනය කරගත්තොත් අපි කෙලින්ම යන්නෙ මේ shell එකට තමයි. අපි සාමාන්‍ය GUI එකක් සහිත Linux ස්ථාපිතයක ඉන්නව නම් alt+ctrl+F2(F2 ඉඳල F6 වෙනකම් ඕන function key එකක් පාවිච්චි කරන්න) යතුරු එකවර එබුවහම අපිට GUI එකෙන් ඉවත් කරල shell එකට අරගෙන යනවා. මළ කෙළියයි දැන් ආපහු GUI එකට එන්නෙ කොහොමද? බය වෙන්න එපා atl+ctrl+F7 වලින් ආයෙ GUI එකට එන්න පුළුවන්. ඒත් නැතුව GUI එකේම ඉඳගෙන shell එක එක්ක වැඩ කරන්න බැරිද? පුළුවන් ඒකට තමයි terminal කියන මෘදුකාංගය තියෙන්නේ.

Terminal

Ubuntu වල නම් Application-->Accessories-->Terminal කියන තැන මේක තියනවා. එහෙම නැත්නම් alt+F2 ඔබලා එන Run Application එකේ gnome-termianl කියල දුන්නහමත් මේක ගන්න පුළුවන්. GUI එකක් මතදි අපිට මේ terminal එක පාවිච්චි කරල shell commands execute කරන්න පුළුවන්.

Shell commands

shell එකෙන් අපි කියන දේ කරලා දෙනව කිව්වට ඉතින් ඒකත් කියන විදිහක් තියනවා. ඒ කියන්නේ නියමිත විධාන තියනවා. ඒවගෙන් තමයි අපි අපිට අවශ්‍ය දේ කියන්න ඕන. ඊළඟ සටහනේ ඉඳල shell commands ගැන කතා කරමු.

ඉතින් මේ සටහන හමාර කරන්නයි යන්නේ. ගැටළුවක් අදහසක් තියනව නම් අහන්න අමතක කරන්න එපා. අඩුපාඩුවක් දැක්කනම් ඒක පෙන්නල දෙන එකත් අගය කරනවා. ඒ නැති උනත් ප්‍රතිචාරයක් සටහන් කරලා යනවනම් ඒක මට ධෛර්යක්.

16 comments:

  1. තැංකූ වේවා. ඔය shell එකේ වැඩකිඩ ටිකක් දැනගෙන ඉන්න එක කෝකටත් හොඳා. ඊළඟ ලිපියත් ටාර්gz ගාල ලියන්න! :)

    ReplyDelete
  2. මේ ලිපි පෙල හුගාක් වෙදගත් වෙයි

    ReplyDelete
  3. එළ මචන්.ගොඩක් වැදගත්.තව ලියපන්.

    ReplyDelete
  4. ලියපන් ලියපන් කොමෙන්ට් නොදැම්මට උඹ ලියන ඒව අපි කියවනවා අනික මේවගේ ලිපි වල ඉගෙන ගන්නත් දෙයක් තියෙනවානේ...........

    ReplyDelete
  5. අනිවා ලියපන් කොල්ලා...මේක ගොඩක් වැදගත්

    ReplyDelete
  6. කියවන්න ලෑස්තියි ලියන්න

    ReplyDelete
  7. රවින්ද අයියා ....

    ලිපි පෙල නම් නියමය...

    පොඩි ප්‍රශ්නෙකුත් තියනවා...
    GUI එකේ ඉදන් Shell එක run කරනව හැර වෙන කිසිම වෙනසක් නැද්ද terminal program එකයි Alt+Ctrl+F2 ඔබල එන එකයි අතර?

    ReplyDelete
  8. @all
    ස්තූතියි දිරිගැන්වීම් වලට.

    @සඳුන්
    හ්ම් තියනවා. alt+ctrl+F2 ගහල ගියාම GUI එක off වෙනවා. එතකොට CUI එක විතරයි තියෙන්නෙ. දැන් උදාහරණයක් විදිහට අපි VGA driver එකක් වගේ install කරනවනම් shell එකට ගිහින් දැනට run වෙන GUI එක off කරන්න එපැයි.ඒ වෙලාවට terminal එකේන් ඒ වැඩේ කරගන්න බෑ. මොකද GUI එකක් run වෙද්දි VGA drivers දාන්න බෑ.

    තව වෙලාවක් තමයි මම නම් පාවිච්චි කරන thrashing වෙන කොට. Firefox වල memory management අවුලක් තියනව කියල දන්නවා ඇතිනේ. මේ නිසා සමහරක් වෙලාවට firefox නිසා මගේ මැෂින් එක busy වෙනවා(ඇත්තටම මේ thrashing කියන දේ වෙන්නේ swap එකට සහ ඒකෙන් එලියට pages copy කරමින් system එක busy වීම).මෙහෙම වෙලාවට terminal එක ගන්න බෑ. මොකද තව process එකකට memory එකේ ඉඩ ගන්න එක තව අමාරු වැඩක්. මේ වෙලාවට මම කරන්නේ alt+ctrl+F2 ගහලා shell එකට ගිහින් ps -auf ගහලා process list එක අරගෙන් ඒකෙන් firefox ගේ process id එක බලාගෙන් kill pid විදිහට දීලා firefox kill කරලා දාන එක.

    ReplyDelete
  9. මමත් ubuntu වලට යන්න ආසයි එත් මගේ මොඩම් එක (Bandlux C120) Ubuntu 9.10 වලදි HSDPA වලින් ටිකවෙලාවක් තිබිලා GSM වලට පනිනවා. වින්ඩෝස් වලදි මේ ලෙඩේ නෑ. මොකක් හරි විසඳුමක් තියනවද?

    ReplyDelete
  10. @කුම්භකර්ණයා
    ම් මගෙත් මොඩම් එක Bandluxe C120 තමා. හැබැයි මම නම් තාම පාවිච්චි කරනනෙ 9.04 තමයි. 9.10 එච්චර හොඳ release එකක් නෙමෙයි. ඒ නිසා මම මාරු උනේ නෑ. windows වලදි network එක 3G only කියල දීල බලන්න. සිග්නල් strength එක මදි උනාම GSM වලට යනවද දන්නෙ නෑ.

    ReplyDelete
  11. එල බසා,මේ ලිපි පෙල හුගාක් වෙදගත් දිගටම ලියපන් මචං....

    ReplyDelete
  12. "shell එකට ගිහින් ps -auf ගහලා process list එක අරගෙන් ඒකෙන් firefox ගේ process id එක බලාගෙන් kill pid විදිහට දීලා firefox kill කරලා දාන එක"

    මේක ගැන මොකද කියන්නේ
    pkill -9 firefox

    ReplyDelete
  13. @ගයාන්
    හ්ම් ලේසියි

    ReplyDelete
  14. නියමයි.
    දිගටම ලියන්න

    ReplyDelete

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