Shell script ලියන්න කලින් නටන්න ඕන Terminal තොවිලය - (Lesson 10)
![Shell script ලියන්න කලින් නටන්න ඕන Terminal තොවිලය - (Lesson 10)](/content/images/size/w1200/2020/06/CE585870-BC2B-439D-9DE8-4643ABBED3CE.jpeg)
![](https://backend.androidwedakarayo.com/content/images/2020/06/bash-shell-scripting-android-wedakarayo.jpg)
ඊළඟ පාඩමේ අපි කෙළින්ම කතා කරන්නෙ Scripting ගැන. ඒත් ඊට කලින් කතා කළ යුතු පොඩි දේවල් ටිකක් තියෙනවා. ඒ ටික අද අපි කතා කරලා අවසන් කරමු. ඊට පස්සෙ අපිට පුළුවන් බය නැතිව වැඩේට බහින්න.
Background Processes
Background processes කියන්නෙ, terminal එකට අපි ලබාදෙන මොකක් හරි කාර්යයක් background processes එකක් බවට පත් කිරීම. මේ ගැන දරුණුවට කතා කරන්න මගෙ බලාපොරොත්තුවක් නෑ. ඒත්, යම් තරමක දැණුමක් තියෙන එක වැදගත්.
කමාන්ඩ් එකක් background එකට දාන්න අවශ්ය නම්, කරන්න ඕන දේ තමයි ඒ අදාළ කමාන්ඩ් එක පිටුපසට & එකක් එකතු කිරීම.
උදාහරණයක් විදියට
sleep 20 &
මෙන්න මේ command එක ගන්න පුළුවන්. මේ කමාන්ඩ් එක &
නැතුව run කළොත් වෙන්නෙ මොකක්ද කියලා ඔයාලා දන්නවා. කලින් අපි සාකච්ඡා කළා. &
එකත් එක්ක මේ කමාන්ඩ් එක පාවිච්චි කළාම අපිට ඒ කලින් ලැබුණ ප්රතිඵලය ලැබෙන්නෙ නෑ. මොකද ඒ processes එක background එකට යවන නිසා. මේකෙ කිසි ප්රයෝජනයක් අපිට නෑ. මම තේරුම් කරවන්න අවශ්ය නිසයි මේක ගත්තෙ.
අපි background එකට යැව්ව processes බලාගන්න run කරවන command එක තමයි jobs
මේකෙන් අපිට පුළුවන් බලාගන්න අපි background එකට දැම්ම processes මොනාද කියලා.
දැන් අපි මේකෙ නියම භාවිතයක් බලමු. අපිට අවශ්ය වෙනවා ඔයාගෙ Home directory එකේ full backup එකක් අරන් ඒක compressed file එකක් විදියට ලබාගන්න. අපි ඒකට මෙන්න මෙහෙම කමාන්ඩ් එකක් දෙන්න පුළුවන්. (මේ කමාන්ඩ් එක run කරන්න home directory එකේ ඉඩ හොඳට තියෙන්න ඕන.)
tar -czf backup.tar.gz /home/user
මේකට සෑහෙන වෙලාවක් යනවා. ඒ වෙලාව අතරතුර ඔයාට terminal එක භාවිතා කරන්න ඉඩ ලැබෙන්නෙ නෑ. ඒ නිසා ඔයාට පුළුවන් මේක
tar -czf backup.tar.gz /home/user &
මෙන්න මේ විදියට වෙනස් කරගන්න. එතකොට, background එකේ අදාළ processes එක වෙලා zip file එක හැදෙනතුරු ඔයාට පුළුවන් terminal එකේ තව වෙන වැඩක් කරන්න.
දැන් මං හිතන්නෙ Background processes ගැන අවබෝධයක් තියෙනවා.
හැම processes එකකටම processes id එකක් තියෙනවා. මේ id එක අපි processes එකක් background කරද්දි පෙන්නනවා. ඔයාට මේ processes එක අවසන් වෙන්න කලින් නවත්වලා දාන්න පුළුවන් kill
command එක පාවිච්චි කරලා.
උදාහරණයක් විදියට, kill 6192
මෙතනදි 6192 කියන්නෙ processes id එක.
Background processes කතාව මෙතනින් අපි නවත්වමු. මේ ගැන වැඩිදුර විස්තර අවශ්ය කෙනෙක්ට අන්තර්ජාලය හරහා බොහෝ විස්තර ලබාගන්න පුළුවන්.
Subshell
අපි shell script එකක් run කරවන අවස්ථා වලදි, දැනට භාවිතා වෙන shell එක නොහොත් parent shell එක විසින් අලුත් child shell එකක් හදනවා. ඒකට අපි කියනවා subshell එකක් කියලා. මෙන්න මේ subshell එකේ තමයි අපේ script එක run වෙන්නෙ. Parallel processing වලදි මේ subshells උදව් වෙනවා.
Parentheses නැත්නම් වරහන් ඇතුළෙ ලියන කමාන්ඩ්ස් සමූහයක් run කරනකොට මේ subshell කියන concept එක භාවිතා වෙනවා. මේ වරහන් භාවිතා කිරීම අපිට කලින් අහුවුණ දෙයක්.
උදාහරණයක් විදියට,
(ls; pwd; date)
ගන්න පුළුවන්. ඒ වගේම, background එකේ commands execute කරන්නත් මේ subshell උපකාරී වෙනවා.
Variables
Shell scripting වලදි විතරක් නෙවෙයි, හැම programming හෝ scripting language එකකම වගේ variables නොහොත් විචල්යයන් භාවිතා වෙනවා. මේවා ගැන අපි ඉදිරියට සාකච්ඡා කරනවා. අද මූලික දේවල් ටිකක් ඉගෙනගනිමු.
Bash scripting වල අපි ප්රධාන වශයෙන් variables වර්ග දෙකක් පිළිබඳව කථා කරනවා.
- Environment variables
- Shell variables
මේ දෙකේම දත්ත රඳවා ගන්නෙ String format එකට. String එකක් කියන්නෙ වචනයක් කියන අර්ථය වගේ. Programming ගැන මූලික දැණුමක් තියේනම් අනිවාර්යයෙන් මේ ගැන දැණුවත් ඇති.
Shell එකෙන් subshell එකක් ඕපන් කරන සැම විටකම parent shell එකේ තියෙන environment variables වල පිටපතක් subshell එකට යැවෙනවා. නමුත් shell variables එහෙම යැවෙන්නෙ නැහැ. Environment variables මඟින් shells අතර දත්ත හුවමාරු කෙරෙනවා.
සාමාන්යයෙන් අපි Terminal එක විවෘත කරනකොට, predefined environment variables සෙට් එකක්ම එතන තියෙනවා. Predefined කිව්වෙ කලින් සකස් කළ කියන තේරුම. එහෙම හැදෙන predefined environment variables වලට උදාහරණ තමයි,
HOME
- ඔයාගෙ home directory එකට path එක.SHELL
- ඔයා දැන් භාවිතා කරන shell එක.PATH
- Shell commands හොයාගන්න භාවිතා වෙන, ඒවා ගබඩා කර ඇති path එක.HOSTNAME
- Unix host name එක.PRINTER
- දැනට භාවිතා වෙන printer එක.
Predefined shell variables අපි ලියන්නෙ කැපිටල් අකුරින් බව සිහියේ තියාගන්න. මේවා ගොඩක් බලාගන්න env
command එක රන් කරවලා බලන්න. Environment variables වලට අපි Global variables කියනවා, මොකද මේවා subshells වලදී පවා භාවිතා කරන්න පුළුවන් නිසා.
User විසින් define කරන shell variables අපිට රිසි සේ භාවිතා කරන්න පුළුවන් shell scripting කරද්දි. මේවා ලියන්නෙ සිම්පල් අකුරෙන්. මේවට අපි local variables කියලා කියනවා.
අදට අපේ පාඩම අවසන්. ඊළඟ පාඩමෙන් අපි බලමු අපේ පළවෙනි shell script එක ලියන විදිය ගැන. නැවත හමුවෙමු, ඔබට ජය!
![](https://backend.androidwedakarayo.com/content/images/2020/06/5CAD3133-4D01-4504-B42E-DF8E4D6901EA.jpeg)