[] செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட்    பணியா. பிரசன்னா   askprasanna@gmail       மின்னூல் வெளியீடு :  FreeTamilEbooks.com        அட்டைப்படம், மின்னூலாக்கம் :   மீ.வேல். பிரசன்னா udpmprasanna@gmail.com    உரிமை :   Creative Commons Attribution - ShareAlike 4.0 International License.        இந்நூல் பெற்று, வளர்த்து, தவறிடும் போது தடுத்தாட்கொண்டு அறநெறியில் பேணிக்காத்திடும் எனது அம்மாவிற்குக் காணிக்கை.   []      சி.மரிய மதலேனா பி.ஏ.பி.எட்., இடைநிலை ஓய்வு ஆசிரியை பொருளடக்கம் நூலுரை:  இளவலுரை:  எழிலுரை:  நன்றிகள்:  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - பகுதி 1  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – பகுதி 2 தரவு வகைகள்  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - 3 செயல் வகைகள், நிலைகள்  செம்மொழியில்கற்போம்ஷெல்ஸ்கிரிப்ட் – 4 இயங்குதளத்தின்ஏற்றநிலை, மாறிகளைப் பயன்படுத்துதல்  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 5 இயங்குதளத்தின் ஏழு ஓடு நிலைகள்  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - 6 செயற்பாடு அல்லது நிரல்துண்டு (Functions)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் 7 - கட்டுப்பாட்டு அமைவுகள் (if condition)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட்– 8 சுழற்சி அல்லது ஆகக்கட்டளை (for loop)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட்– 9 சுழற்சி அல்லது ஆகக்கட்டளை (for loop) தொடர்ச்சி  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -10 வளைவுக் கட்டளையின் வேறு வகைகள்  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -11 பொழுதெலாம் கட்டளை அல்லது while loop – entry controlled loop  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -12 வரையிலும் கட்டளை அல்லது until loop – exit controlled loop  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -13. தேர்வுக் கட்டளை அல்லது தேர்வாணை (case statement)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -14. தேர்வுக் கட்டளை இருந்தால் கட்டளை வேறுபாடுகள் (case statement vs else if ladder)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -15. சுழற்சியில் முறிவுக்கட்டளை (break statement in loop)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -16. சுழற்சியில் தொடர் கட்டளை அல்லது இடைவிடாக் கட்டளை (continue statement in loop)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -17 கட்டளைவரி அளவுருக்கள்அல்லதுகட்டளைவரிதருமதிப்புக்கள் (command line parameters or command line arguments)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -18.கட்டளைவரி அளவுருக்கள் அல்லது கட்டளைவரி தருமதிப்புக்கள் (command line parameters or command line arguments) - தொடர்ச்சி  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -19. உறக்கக் கட்டளை அல்லது தூக்கக் கட்டளை (sleep command)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -20. அளவுருக்கள் அல்லது தருமதிப்புக்கள் (command line arguments or command line parameters) தொடர்ச்சி  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் -21  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 22 மாற்றுக் கட்டளை (shift command)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 23 Trap command (கண்ணி -கட்டளை)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 24 (getopts command) பொருத்தம் பெறும் கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 25 (cut command) வெட்டுக் கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 26 (paste command) ஒட்டுக் கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 27 (tput command) இடு கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 28 (tput command) இடு கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 29 (tput command) இடு கட்டளை தொடர்ச்சி  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 30 (nohup command) செயலிழக்காக் கட்டளை  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 31  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 32  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 33  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 34 தப்பிடும் விசைக‌ள் (escape sequences)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 35 வெளியேறும் வழிக்கட்டளை (exit command)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 36 உள்ளார்ந்த கட்டமைப்புக் கட்டளைகள் (Internal Commands and Builtins)  செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 37 இரட்டை அடைப்புக் குறி  முடிவுரை:  நூல் ஆசிரியர் :                  நூலுரை:   “செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட்” இந்தத் தலைப்பைச் சொல்லும் பொழுதே ஏதோ திருமொழியைச் சொல்கின்றோம் என மனதிற்குத் தோன்றுகிறது. இலினக்சு (Linux) இயங்குதளத்தில் ஏறத்தாழ பன்னிரெண்டு ஆண்டுகள் பட்டறிவு இருப்பினும், இப்பொழுதுதான் இது போன்ற ஒரு நூலைத் தமிழில் தரத் தருணம் பிறந்திருக்கிறது. இந்நூலில் ஒவ்வொரு பகுதியிலும், அதில் அமைந்துள்ள ஆங்கிலக் கலைச்சொற்களுக்கு இணையாகத் தமிழ்ச்சொற்களைத் தந்திருக்கிறேன். செம்மொழியில் என்று நூல் தொடங்குவதால், ஒவ்வொரு பகுதியிலும் ஒரு கவிதை வரைந்திருக்கிறேன். தமிழ் வழிக்கல்வி கற்றோர் இதை பெரிதும் விரும்புவர். இந்தக் கவிதைகள் புதுக்கவிதையில் சேராமல், நான் என்றோ படித்த மரபுக் கவிதையின் தாக்கத்தில் விளைந்தவை. இவை முழுமையாக எந்தப் பா வகையிலும் சேராமல் இருப்பினும், மரபுக்கவிதை போன்றே அமைந்திருப்பது சிறப்பு. இலினக்சு ஏற்கனவே தெரிந்திருப்போர், இந்நூலைப் படிப்பின் ஷெல் ஸ்கிரிப்ட்டை எளிய தமிழில் கற்கலாம். நான் சொல்கிறேன், நீங்கள் கேளுங்கள் என்ற வகையில் நூல் இல்லாமல், கற்போம் என்ற பதத்தின் மூலம், நானும் உங்களுடன் சேர்ந்து கற்கிறேன் என்பதை அறியத்தருகிறேன். எனக்குத் தெரிந்தவைகளை இயன்ற வரையில் இனிய தமிழில் எடுத்துரைக்க முன்றிருக்கிறேன். ஒவ்வொரு பகுதியிலும் பல நிரல்கள் இடம் பெற்றிருக்கின்றன. அவற்றின் விளக்கங்கள் பத்திகளில் இடம் பெற்றுள்ளன. நிரல்+பா=நிரற்பா என்ற கிளவியின் மூலம் நானறிந்த தமிழை நாடறியச் செய்ய விழைகின்றேன். நூலில், முதலில் நிரற்பா வரும். பிறகு அதற்கான விளக்கம் உண்டு. நிரல்களுக்கு வரிசை எண்கள் தரப்பட்டுள்ளன. புரியாத சொற்களுக்கு அல்லது பொதுவாகப் பயன்படுத்தும் ஆங்கிலப் பதங்களுக்கு விளக்கங்கள் அடைப்புக்குறிகளுக்குள் வழங்கப்பட்டுள்ளன. பகுதிகளின் ஈற்றில் கலைச்சொற்களும் அவற்றிற்கான விளக்கங்களும் ஆங்கிலத்தில் விளக்கப்பட்டுள்ளன. படங்கள், அதற்கான விளக்கங்கள், அட்டவணைகள் ஆகியனவும் அளிக்கப்பட்டுள்ளன. “கற்போம்” என்று தமிழ் கம்ப்யூட்டர் இதழில் தொடராக வெளிவந்த இந்தக் கட்டுரைகளைத் தொகுத்து ஒரு நூலாகத் தருவதில் பெருமகிழ்ச்சி கொள்கிறேன். எனக்கு இது மிகவும் பயனுள்ள நூலாகத் தெரிகின்றது. உங்களுக்கும் அதே உணர்வு ஏற்படும் என்றே கருதுகின்றேன்.       இளவலுரை:   []   உலகெங்கும் இருக்கின்ற அன்புத் தமிழ் ஆர்வலர்களுக்கு, எனது பணிவான வணக்கங்கள். எனது தமையனார் பணியா. பிரசன்னா அவர்களின் செம்மொழியில் கற்போம் ஷெல்ஸ்கிரிப்ட் என்ற இந்நூல் கணினி அறிவியலில் ஒரு மைல் கல். “நீரின்றி அமையாது உலகு” என்ற கூற்றைப் போல், கணினி, கைபேசி, மற்றும் எண்ணிலடங்கா மின் கருவிகள்(Devices /Gedgets) இயங்கத் தேவை ஒரு வலுவான இயங்குதளம் (Operting System). அத்தகைய இயங்குதளங்களுள் Linux முடிசூடா மா மன்னன். அந்த‌ Linux இயங்குதளத்தில் பணியா.பிரசன்னா மின்னூலாசிரியரின், திறன் என்பது நான் அருகில் இருந்து கண்டு வியந்தது. அவர் தமிழின் பால் கொண்டுள்ள அவா தமிழ் கம்ப்யூட்டர் இதழின் வாயிலாக தமிழகமெங்கும் விரிந்து பரவலாயிற்று. பின்னாளில், இத்தகு மின்னூலின் வாயிலாக உலகத் தமிழர்களின் (குறிப்பாக கனடா, நார்வே,ஃபிரான்ஸ், மற்றும் ஈழம்) அன்பைப் பெற்று தொடர்ந்து வீர நடை போடுகிறது. இந்நூலில் அவர் மிகச்சிறப்பாக‌ ஆங்காங்கே சிறு நிரற்பாக்களையும் அதன் விளக்கத்தையும் கூறி, படிப்பவரை ஆர்வமடையச் செய்திருக்கிறார். அவர் கணினி அறிவியலை தமிழின் வழியாக‌ மென்மேலும் சிறப்பு பெறச் செய்ய‌ உலகத் தமிழர்களின் ஆதரவு பெருகிட வாழ்த்துகிறேன். அன்புத்தம்பி, பா.அறிவு ஆரோக்கிய இராஜேஷ். மென்பொருள் கட்டுமான மேலாளர், டிசிஎஸ், பெங்களூரு.   எழிலுரை:   []   நாம் எங்கு செல்கிறோம் என்று நினைத்துப் பார்க்க முடியாத, அளவிற்கு தொழிற்நுட்பமானது வெகு விரைவாக வளர்ந்து வருகிறது. உலக மயமாக்கலின் வாயிலாக, நாம் பல்வேறு வாய்ப்புகளைப் பெற்று நாள் தோறும் வளர்ந்து வருகிறோம். வெளிநாட்டுக்குரிய பள்ளிகளும் இந்தியாவில் அதிகரித்து வருகிறமையால் அனைத்து வெளிநாட்டு வாய்ப்புகளும் எளிமையாய் நம் நாட்டிற்கு வந்து விடுகின்றன. அதைப்போலவே, குழந்தைகளும் தங்கள் தாய்மொழி தவிர்த்து பிறமொழிகளைப் பயில்வதில் ஆர்வம் காட்டி வருகிறார்கள். ஆராய்ச்சி என்பது பிறமொழிகளைப் பயின்று அதன் மூலம் வருவதில்லை. தாய்மொழியில் பயின்று அதைத் திறம்படக் கற்று அதிலிருந்து ஆய்வறிக்கை வருவதே சிறந்தது. தாய்மொழி வழிக்கற்றலே அதன் வழி தடையறச் சிந்திக்கவும் பெரிதும் உதவுகிறது. இன்றைய நாளில் எந்தப் பணி செய்தாலும், அதற்கு கணினி கல்வியறிவு தேவைப்படுகிறது. தமிழ்வழிக் கல்வி கற்றவர்கள் தங்கள் தாய்மொழியில் பயில‌ இந்நூல் பெரிதும் உதவும் என்பதில் எள் முனையளவும் ஐயமில்லை. ஆசிரியரின் அளப்பரிய இப்பணியைப் பாராட்டுகிறேன். தமிழ் வழிக்கல்வி கற்றோர் இந்நூல் பயின்று இன்புற அன்புடன் அழைக்கிறேன். அன்பு மனைவி, விர்ஜின் பிரசன்னா. திட்ட ஒருங்கிணைப்பாளர், செயிண்ட் ஜான்ஸ் கல்லூரி, பெங்களூரு நன்றிகள்: எல்லாம் வல்ல இறைவன் தொடங்கி, இளவலுரை தந்த எனது தம்பிக்கும், எழிலுரை தந்த எனது மனைவிக்கும், மின்னுல் எழிலுற அமைத்த எனது அருமை உடன்பிறப்பு மீ.வேல்.பிரசன்னாவுக்கும், மற்றும் தமிழ் கம்ப்யூட்டர் பதிப்பகத்தாருக்கும் மற்றும் இந்நூல் வெளிவரத் தெரிந்தோ, தெரியாமலோ உதவியோர் அனைவருக்கும் எனது நெஞ்சார்ந்த நன்றிகள்.   “உளன் எனின் உளன் என்பதும் இலன் எனின் இலன் என்பதும் உலகோர் கூற்றே; உயர்ந்த‌ அன்பே ஆண்டவன் என்பது அறத்தின் வாழ்த்தே !!”       []   செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - பகுதி 1   “பயிற்சியால் வருமாம் பயனர் தோழமை  கட்டளை வரிசை கொண்டி யங்கும்  தானாய்ச் செயல்கள் தடையறச் செய்யும்  ஃபின்லாந் தந்தமென் பொறிக்குறு நிரலே”  நிரற்பா-1  முன்னுரை:  இயங்குதளம் என்பது பயனருக்கும், கணினிக்குமிடையே இருக்கும் ஒரு இடைமுகப்பாகும். பொதுவாக ஒரு இயங்குதளத்தினை நிறுவல் செய்வது மட்டுமே பயனரின் அனைத்துத் தேவைகளையும் பூர்த்தி செய்து விடாது. பயனரின் அன்றாடத் தேவைகள் தானியங்கு மயமாக்கப்படல் வேண்டும். அப்பொழுதான் பொறிநிறைஞரின் வேலை எளிதாகும். பயனரின் தேவைகள் விரைவாக முடியும். அவ்வாறு தானியங்கு மயமாக்கலுக்கு, இயங்குதளத்தில் உள்ள கட்டளைகளை தொடர்பு படுத்தி நிரல்கள், குறுநிரல்கள் எழுதப்படல் வேண்டும். அவையும் பொதுமயமாக்கலுக்கு ஏற்ற வண்ணம் எழுதப்படல் வேண்டும். அதற்காக நாம் ஷெல் ஸ்கிரிப்ட் கற்க வேண்டும்.  ஷெல் ஸ்கிரிப்ட் என்றால் என்ன?  இலினெக்ஸு இயங்குதளத்தில் பல்லாயிரக்கணக்கான கட்டளைகள் உள்ளன. அவற்றை நமது செயலுக்கு ஏற்ற வண்ணம் எடுத்து குறுநிரல்கள் எழுதப்படுவதே ஷெல் ஸ்கிரிப்ட் என்றழைக்கப்படுகிறது. ஷெல் ஸ்கிரிப்ட் என்பது சி, சி++ போன்று ஓர் உயர்நிலை மொழி கிடையாது. தன்மயமாக்கலுக்காகவே ஷெல்ஸ்கிரிப்ட்டுகள் பயன்படுத்தப் படுகின்றன. கணினி மொழிகளைப் பொதுவாக‌ இரண்டுவகையாகப் பிரிக்கலாம். ஒன்று கம்பைலர் முறை மொழிகள் இரண்டு இன்டர்ப்ரெட்டர் மொழிகள். கம்பைலர் மொழிகள் பிழைகளை மொத்தமாகக் காண்பிக்கும். இன்டர்பிரட்டர் மொழிகள் ஒவ்வொரு படியாகக் (step by step execution) காண்பிக்கும். இதில் ஷெல்ஸ்கிரிப்ட் என்பது இரண்டாம் வகையைச் சேர்ந்தது. ஷெல் ஸ்கிரிப்ட்டுகள் பொதுவாக எல்லாவகையான இலினக்ஸீ இயங்குதளங்களிலும் இயங்கும். விண்டோஸ் வகை இயங்குதளங்களில் இதற்கு இணையாக பேட்ச் ஸ்கிரிப்டுகள் பயன்படுத்தப்படுகின்றன.  யாரெல்லாம் படிக்கலாம்:  பொறி நிறைஞர்கள் (System Administrators), மென்பொறிஞர்கள் (software engineers), நிரலர்கள் (programmers), யுனிக்ஸ், லினக்ஸ் ஆர்வலர்கள் (Unix & Linux enthusiasts) ஆகியோருக்குப் படித்து எளிதில் புரிந்து கொள்ளும் வண்ணம் இத்தொடர் அமைக்கப் பெற்றிருக்கிறது. தொடரைப் படித்துப் புரிந்து கொள்ள இயங்குதள அமைப்பு (OS architecture), குறைந்தபட்சம் தொடக்க நிலை நிரலெழுதும் திறமை (at least beginner level programming skills) ஆகியவை இருக்க வேண்டும்.  ஷிபேங்க் (Shebang)  ஷிபேங் என்பது நாம் எழுதக்கூடிய குறுநிரல், எந்த வகையான ஷெல்லில் இயக்கப்பட வேண்டும் என்பதனைக் குறிக்கிறது. இது ஷிபேங் ஷாபேங் ஹாஷ்பேங், பௌண்ட் பேங், ஹாஷ்‍ எக்ஷ்கிலெம், ஹேஷ் பிலிங் என்று பலவாறாக அழைக்கப்படுகிறது. இதை #! என்று குறுநிரலில் குறிப்பிடுவது வழக்கம்.   ஷெல்லின் வகைகள்:  இலினெக்ஸைப் பொறுத்தவரையில் பலவகையான ஷெல்கள் காணப்படுகின்றன. ஆனால் நமது குறுநிரல்கள் குறிப்பிட்ட ஷெல்லில் மட்டுமே நடைபெறவேண்டுமென்பதற்காகவே நாம் ஷிபேங் என்று நிரலின் தொடக்கத்திலேயே குறிப்பிட வேண்டும். உள்ளிருப்பாக ஷெல் ஸ்கிரிப்ட்டுகள் பேஷ் ஷெல் எனப்படும் ஷெல்லிலேயே இயக்கப்படும். ஆனால் இது ஒவ்வொரு பொறி பொறுத்தும் மாறுபடும். எனவேதான் நாம் இதனை ஒவ்வொரு நிரலின் தொடக்கத்திலும் செய்ய வேண்டும். இல்லையேல் ஒரு பொறியில் சிறப்பாக இயங்கும் குறுநிரல் வேறு பொறியில் (உள்ளிருப்பாக இருக்கும் ஷெல் மாற்றப்பட்டிருந்தால்) சரிவர இயங்காது.  1. பார்ன் ஷெல் (Bourne shell (sh))  2. பார்ன் எகெயின் ஷெல் (Boune Again SHell (BASH))  3. சி ஷெல் (C Shell (csh))  4. டிசி ஷெல் (TC Shell (tsh))  5. கார்ன் ஷெல் (Korn shell (ksh))  உள்ளிருப்பாக அனைத்து வகையான லினிக்ஸு இயங்குதளத்திலும், பேஷ் ஷெல்லிலேயே குறுநிரல்கள் இயங்கும். sh என்ற கட்டளை மூலம், அதை பார்ன் ஷெல்லுக்கு மாற்றலாம். சொலாரிஸ் இயங்குதளத்தில் உள்ளிருப்பாக கார்ன் ஷெல்லானது செயற்படும்.  ஷெல்களுக்கிடையேயான வேறுபாடு:  கீழ்க்காணும் அட்டவணையானது நமக்கு ஷெல்களுக்கிடையான வேறுபாடுகளை உணர்த்துகிறது. இங்கு zsh என்ற இன்னொரு ஷெல்லும் எடுத்தாளப் பட்டுள்ளது. அதுவும் நாம் ஷெல் மொழியைப் பயன்படுத்தக்கூடிய ஒர் இன்டர்பிரட்டர்தான்.  []   +++ மிக நன்று  ++ நன்று  + இருக்கிறது  - ஆற்றலற்தாய் இருக்கிறது.  -- இல்லை    இது போன்று பைத்தான் ஸ்கிரிப்ட், பர்ல் ஸ்கிரிப்ட், ரூபி ஸ்கிரிப்ட் ஆகியவற்றிற்கும் வேறுபட்ட ஷெல்கள் உண்டு.  முன்னறிவுத் தேவைகள்:  ஷெல் ஸ்கிரிப்ட் மொழி பயில்வதற்கு சி மொழி தெரிந்திருக்க வேண்டும் என்று சிலர் சொல்வதுண்டு. கண்டிப்பாக தெரிந்திருக்க வேண்டும் என்பதல்ல. தெரிந்திருந்தால் ஷெல் ஸ்கிரிப்ட் பயில்வதற்கு எளிதாக இருக்கும். லினக்சு இயங்குதளத்தின் கட்டளைகள் நன்கு தெரிந்திருக்க வேண்டும். அப்பொழுது எல்லா வகையான செயல்களையும் நாம் நன்கு கட்டுப்படுத்தி, தானியங்கு நிரல்களை எழுத முடியும். எனவே ஷெல் ஸ்கிரிப்ட் என்பது பொதுவாக சில லினக்சு கட்டளை வரிகளின் தொடர்ச்சியாகும். புதிதாக ஷெல் ஸ்கிரிப்ட் கற்றுக் கொள்வதற்கும், ஏற்கனவே கற்றவர்கள் அதை மேம்படுத்திக் கொள்வதற்கும் இத்தொடர் துணைபுரியும்.  நிரல் 1:  #!/bin/bash echo “Welcome to Linux Shell script world” நிரல் இயக்கும் முறை:  மேற்கூறிய நிரலை ஏதேனும் ஒரு உரைத் தொகுப்பானில் தட்டச்சு செய்து, அல்லது வி(ம்) தொகுப்பானில் (vi(m) editor) எழுதி சேமித்துக் கொள்ளவும். எடுத்துக்காட்டாக, script1.sh என பெயரிடலாம். குறுநிரலின் கோப்பானது, .sh என்ற பின்னொட்டுடன் இருக்க வேண்டிய தேவையில்லை. இருப்பினும், இந்தப் பின்னொட்டு நிரலர்களுக்கு குறுநிரல்களைப் பிரித்தறிய உதவுகிறது.  #sh -x script1.sh என்ற கட்டளைவரி குறிப்பிட்ட குறுநிரலை வரிவரியாக இயக்கி வெளியீட்டைத் தருகிறது.  #sh -v script1.sh என்ற வரியானது வெளியீட்டை நிரலருக்குப் புரியும் வண்ணம் விளக்குகிறது.  இருப்பினும் இக்கட்டளை வரிகளாவை ஒரு குறுநிரலை பிழைதிருத்தப் பயன்படுத்துதல் சிறப்பு. ஏற்கனவே பிழைதிருத்திய நிரல்களை கீழ்க்காணும் கட்டளைவரிகள் மூலமாக இயக்கிப்பார்க்கலாம்.  #chmod +x script.sh இந்தக்கட்டளை வரி ஒரு நிரலை அனைத்துப் பயனர்களும் இயக்கிப்பார்க்கும் உத்தரவினைத் தருகிறது. இவ்வரி தராவிட்டால் நிரலை ப‌யனர்கள் யாரும் இயக்க முடியாது.  #./script.sh இது ஒரு நிரலை இயக்கி வெளியீட்டைத் தருகிறது. பிழைகள் இருப்பின், பிழைகளைப் படிப்படியாகக் காண்பிக்கும்.  இங்கு படிப்படியாக என்பது, நான்கு வரி நிரலில் இரண்டாம் வரியிலும் மூன்றாம் வரியிலும் பிழையிருப்பின், முதலில் இரண்டாம் வரியினையும், அது சரி செய்யப்பட்ட பின்பே மூன்றாம் வரியின் பிழையையும் காண்பிக்கும்.  மேற்குறிப்பிட்ட நிரல் Welcome to Linux Shell script world என்ற வெளியீட்டினைத் தரும். echo கட்டளை தன்னுள் இருக்கும் வாக்கியத்தினை வெளிக்காட்டுகிறது.  ஐயம்: ஷெல் ஸ்கிரிப்ட் விண்டோஸ் இயங்குதளத்தில் இயங்குமா?  []   தீர்வு: பொதுவாக லினக்சில் இயங்கும் ஷெல் ஸ்கிரிப்ட்டுகள், விண்டோசில் இயங்காது. சில பொதுவான echo போன்ற‌ கட்டளைவரிகள் ஒரே மாதிரியான வெளியீட்டைத் தரும். விண்டோசுக்கென்று தனியாக batch file programming இருக்கிறது. (filename.bat) அவற்றில் விண்டோசுக்கான கட்டளைகளை இயக்கிப் பார்த்து ஸ்கிரிப்டுகள் எழுத முடியும். அவை முற்றிலும் விண்டோஸ் இயங்குதளத்திற்கு மட்டுமே உரியன. விண்டோஸ் இயங்குதளத்தில் உள்ள பவர் ஷெல் மூலமாக அனைத்து வகையான விண்டோஸ் கட்டளைகளையும் இயக்கலாம். இதன் முதல் பதிப்பான பவர் ஷெல் 1 விண்டோஸ் எக்ஸ்பி எஸ்பி2 விலேயே வந்திருந்தாலும், விண்டோஸ் ஏழு, எட்டு இயங்குதளங்களில் இதன் மேம்பட்ட பதிப்பினைப் பயன்படுத்தி ஷெல் ஸ்கிரிப்ட்டுக்கு இணையான குறுநிரல்களை எழுதி இயக்க முடியும். தானியங்கு செயல்கள் செய்விக்க முடியும். Cygwin எனப்படும் லினக்சு மாதிரி செயலியில் (Linux Simulation) ஷெல் ஸ்கிரிப்ட்டுகளை இயக்கிப் பார்க்கலாம்.  []   மேலும் நிரல்களை எழுத அறியும் முன் இலினக்சு இயங்குதளத்தின் கட்டமைவினைப் பற்றி அறிவோம். பின்வரும் படம் இலினக்சு இயங்குதளத்தின் கட்டமைவினை எளிதில் விளக்கும் வண்ணம் அமைந்துள்ளது.  1. செயலி மேலாண்மை  2. நினைவக மேலாண்மை  3. கோப்பு மேலாண்மை  4. வன்பொருள் மேலாண்மை  5. வலையக மேலாண்மை  ஆகியவை முதன்மையானதாக இங்கு விளங்குகின்றன.  []   கலைச்சொற்கள்: பொதுமயமாக்கல் – generalization  இடைமுகப்பு – interface  குறுநிரல்கள் – scripts  தன்மயமாக்கல் – automation  உள்ளிருப்பு – by default  பொறி – system  கட்டமைவு – architecture   (கற்போம்…)        செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – பகுதி 2 தரவு வகைகள்   எண்கள் உரைகள் என்றிரு தரவுகள்  கொண்டு புனைந்திட கணக்கு எளிமை  ஏரணப் பிழையற் றெழுதிட‌ல் வேண்டும்  எண்ணிய தீர்வு இன்பமாய் வரவே  நிரற்பா – 2    ஒரு இயங்குதளமானது பின்வரும் ஐந்து வகையான மேலாண்மைகளைச் சரிவர‌கையாள வேண்டும்.  1. செயலி மேலாண்மை (process management)  செயலி மேலாண்மையானது ஓர் இயங்குதளத்திலுள்ள அனைத்து வகையான செயலிகளையும் கண்டுணர்ந்து அவற்றை உரிய வகையில் இயக்குதளைக் குறிக்கிறது. செயல் என்பது என்ன ஒரு வகையான வினையாகவும் இருக்கலாம். எடுத்துக்காட்டிற்கு கூட்டல், கழித்தல், வகுத்தல், பெருக்கல் என அடிப்படை கணக்கீட்டு வினைகளையும் எடுத்துக்கொள்ளலாம்.  1. நினைவக மேலாண்மை (memory management)  நினைவக மேலாண்மையானது எந்த வகையான செயலுக்கு எவ்வளவு நினைவகம் தேவைப்படும் என்பதை ஆய்ந்தறிந்து செயற்பட வேண்டும். இதிலும் முதன்மை நினைவகம், இரண்டாம் நினைவகம் என இரண்டு வகைகள் உண்டு. முதன்மை நினைவகம் பொதுவாக RAM (Random Access Memory) ஐக் குறிக்கிறது. இரண்டாம் நினைவகம் வன்வட்டினைக் குறிக்கிறது.  மெய்நிகர் நினைவகம்: இது வன்வட்டின் ஒரு பகுதியாக இயங்கினாலும், பொதுவாக RAM ஆனது முழுவதும் செயலிகளால் கையகப்படுத்தப்பட்டால், இது RAM ஆகச் செயல்படும். இலினக்சு இயங்குதளத்தில் இது பொதுவாக ஒன்றரை முதல் இரண்டு மடங்கு RAM அளவினைக் கொண்டிருக்கும் வண்ணம்  அமைக்கப்படல் வேண்டும். இது பொதுவாக விதியாக இருப்பினும், அதிக அளவு RAM பயன்படுத்தப்படும் பொழுது இதற்கு விதிவிலக்குகளும் உள்ளன.  1. கோப்பு மேலாண்மை (file management)  கோப்பு என்பது பல்வேறு வகையான தரவுகளின் அல்லது பதிவுகளின் கூட்டமைவு ஆகும். இவற்றைச் சரிவர மேலாண்மை செய்தல் இயங்குதளத்தில் வேலைகளில் இன்றியமையாததாகும். அவ்வாறு செய்யாவிடில் பயனர் கோப்புக்களை அணுகும் பொழுது குழப்பம் நேரலாம். இலினக்சானது ext4, ext3, ext2, vfat, swap கோப்பவமைவுகளை தன்னகத்தே கொண்டிருந்தாலும், அது VFS என்ற Virtual File System கொண்டே பொதுவாக பயனர்களுக்கு தனது வெளியீட்டினைத் தருகிறது. இங்கு VFS என்பது ஒரு தற்காலிக கோப்பமைவாக உள்ளது. ஒரு குறிப்பிட்ட கட்டளை எவ்வாறு இயங்குகிறது என்பதனை ஓர் எடுத்துக்காட்டின் மூலம் காணலாம்.  ls என்ற கட்டளையானது listing என்பதன் சுருக்கமாகும். அதாவது ஒரு கோப்பமைவில் அல்லது ஓர் அடைவில் இருக்கும் கோப்பு மற்றும் துணை அடைவுகளை காட்டும் கட்டளையாகும். இந்தக் கட்டளை கொடுக்கப்பட்டவுடன் அது ஒரு fork (துணைச்செயல்) ஐ உருவாக்கி, execute(“ls”) என ஏற்கனவே சி மொழியில் எழுதப்பட்ட ஒரு நிரலை அழைக்கும். (இலினக்சு சி மொழியில் எழுதப்பட்ட இயங்குதளம் என்பதறிக.) அது குறிப்பிட்ட கருவியினைத் திறந்து (வன்வட்டு/குறுவட்டு/நினைவக அட்டை) தற்காலிக நினைவகத்தில் ஏற்றிக் கொண்டு குறிப்பிட்ட கட்டளையைக்குறிய (ls) வெளியீட்டினைத் தரும்.  #ls இது listing கட்டளை  #strace ls இது listing கட்டளை கொடுத்தனால் என்னவெல்லாம் நடக்கிறது என்பதை பயனர் அறிய உதவும் கட்டளை.  1. வன்பொருள் மேலாண்மை (hardware management)  பொதுவாக ஓர் இயங்குதளத்தில் வன்வட்டு, நினைவக அட்டைகள், குச்சி நினைவகங்கள், குறுவட்டுக்கள், அடர்குறுவட்டுக்கள், தொலை வன்வட்டுக்கள் போன்றவை கையாளப்படுகின்றன. இது அல்லாமல் காப்புப்படி எடுக்கும் பொழுது, வேறுபட்ட காப்புப்படி ஒலி நாடாக்களோ(முந்நாட்களில்) அச்சடிக்கும் பொழுது அச்சுப்பொறிகளோ கையாளப்படுகின்றன. இதில் எந்த வகையான கருவிகளைக் கையாண்டாலும் பயனருக்குத் தோழமை கொடுக்கும் வண்ணம் வன்பொருள் மேலாண்மை செய்யப்படல் வேண்டும்.  1. வலைய மேலாண்மை (network management)  இது இரண்டு வகைப்படும்.   1. கம்பியுள்ள வலையம்  2. கம்பியில்லா வலையம்  இந்த இரண்டுமே வரையறுக்கப்பட்ட வலைய அடுக்குகள் மற்றும் வலையக்கருவி இயக்கிகள் கொண்டு செயல்படுகின்றன.  இந்த ஐந்து வகையான மேலாண்மைகளும் ஒன்றுக்கொன்று நெருங்கிய தொடர்புடையவை. இவை அனைத்தையும் சரிவர செயல்படுத்துவதே ஒரு திறனுள்ள இயங்குதள த்தின் வேலையாகும்.  ஒவ்வொரு மொழி பொறுத்தும் தரவு அமைவுகள் வேறுபடும். இங்கு ஷெல் நிரல்களைப் பொறுத்த அளவில் எண்கள் மற்றும் உரைகள் என இரு வகை தரவுகளே உள்ளன. உயர் நிலை மொழிகளான சி, சி++, ஜாவா மொழிகளில் நாம் ஒரு மாறியைப் பயன்படுத்த வேண்டுமெனில் அதனை நாம் வெளியிட வெண்டும். ஆனால் ஷெல் நிரலானது உயர் மொழி இல்லாததால் நாம் அவ்வாறு வெளியிடத் தேவையில்லை.   எண்கள் இங்கு எண்களானது, இயல் எண்கள், முழுக்கள், என வேறுபடுத்தி அறியப்படுவதில்லை. அவை அந்தந்த இடங்களைப் பொறுத்து மாறுபட்டு நிற்கின்றன. அவற்றை நமது தேவைகளுக்கேற்ப பயன்படுத்திக் கொள்ளலாம்.  உரைகள் எந்த வகையான உரையாக இருப்பினும் அவை இரட்டை மேற்கோள்குறிக்குள் எழுதப்படல், அணுகப்படல் வேண்டும். உரைகளுக்குள்ளே ஒப்பிடும் பொழுது அதே போன்று செயதல் வேண்டும்.  எண்கள், உரைகள் ஆகியவற்றைப் பற்றி விரிவாக பிறகு வரும் நிரல்களின் விளக்கத்தின் பொழுது காணலாம்.  ஐயம்: ஷெல் ஸ்கிரிப்ட்டுகள் அர்ரே (Array) எனப்படும அடுக்குமாறிகளை ஆதரிக்குமா?  தீர்வு: ஷெல்ஸ்கிரிப்ட் அர்ரே எனப்படும் அடுக்குமாறிகளை நேரடியாக ஆதரிக்காது. இருப்பினும் ஒரு பரிமாண அடுக்குமாறிகளை (one dimensional array) நாம் நேரடியாக நிகர்படுத்தி (assign) பயன்படுத்தலாம். அவை குறித்த நிரல்களை பின்னால் பார்க்கலாம். அடுக்குமாறிகள் அனைத்தும் சுழி அடிப்படை தொடக்கத்தைக் (zero-based index) கொண்டவையாகும். அடுக்குமாறிகளுக்கு வரம்பெல்லை எதுவும் கிடையாது. ஆனால் உயர்நிலை மொழிகளான சி,சி++,ஜாவா போன்று இரு பரிமாண (two dimensional), முப்பரிமாண (three dimensional), பல்பரிமாண(multi-dimensional) அடுக்குமாறிகளை ஷெல் ஸ்கிரிப்ட் ஆதரிக்காது.  ls கட்டளையின் பொழுது பின்வரும் படத்தில் உள்ளது போல் இயங்குதளத்தில் செயற்பாடுகள் நிகழும்.  []   இங்கு VFS என்பது Virtual File System என்பதைக் குறிக்கும். இனி எண்கள் உரைகள் ஆகியவற்றை எவ்வாறு நிரலில் பயன்படுத்தலாம் என்பதைக் காணலாம்.  எண்களை நிரலில் அறிக்கும் முறை:  i=5 j=6 உரைகளை நிரலில் அறிவிக்கும் முறை:  one=”This is one” two=”This is two” three=”3”  இங்கே 3 என்ற எண் உரையாகக் கருதப்படுகிறது. பின்வரும் நிரலில் இவற்றை நாம் அழைக்கலாம்.  நிரல் 2:   #!/bin/bash echo “i value is $i” echo “j value is $j” echo “first string is $one” echo “second string is $two” echo “third string is $three” ஒரு குறுநிரல்(shellscript) எப்படியிருக்க வேண்டும்?  குறுநிரலானது பின்வரும் ஐந்து முதன்மையான கொள்கைகளைக் கொண்டதாக இருக்க வேண்டும்.  1. குறுநிரலானது பிழைகளின்றி இருத்தல் வேண்டும்.  2. நிரலானது ஏரணப் பிழையறத் தெளிவுற அமைதல் வேண்டும்.  3. நிரலானது ஒரு குறிப்பிட்ட செயலினைச் செய்தல் வேண்டும்.  4. குறுநிரலானது தேவையற்ற செயல்களைச் செய்தல் கூடாது.  5. குறுநிரல்கள் திரும்பப் பயன்படுவதற்கு ஏற்றதாக அமைதல் வேண்டும்.  நிரல் 3:  தற்பொழுது பொறியில் உள்நுழைந்திருக்கும் (system login users) பயனர்களின் பெயர்களை மட்டும் வரிசைப்படுத்தும் குறுநிரலை கீழ்க்கண்டவாறு எழுதலாம்.  பொதுவாக w அல்லது who ஆகிய இரண்டு கட்டளைகள் மூலம் ஒரு பொறியினுள் உள்நுழைந்திருக்கும் பயனர்களின் அனைத்து விபரங்களை அறிய முடியும். கீழ்க்காணும் கட்டளை அதற்கு உதவுகிறது.  #who | sort | cut -d‘ ’ -f1 இங்கு who என்பது முதன்மைக் கட்டளை ஆகும். sort என்பது வெளியீட்டினை அகரவரிசையில் அமைக்க உதவும் கட்டளையாகும். cut என்பது ஒரு குறிப்பிட்ட field எனப்படும் நிரையினை (column) மட்டும் பிரிக்க உதவும் கட்டளையாகும். d என்பது delimiter or separator என்றழைக்கப்படும் பிரிப்பான் ஆகும். f1 எனது முதல் நிரையினைக் (column) குறிக்கிறது. இதற்கான முழுநிரலைக் கீழ்க்காணுமாறு எழுதலாம்.  #!/bin/bash # whos – a program which displays the login usernames of a particular system. who | sort | cut -d‘ ’ -f1 பின்வரும் படங்கள் எவ்வாறு குறிப்பிட்ட நிரலை எழுதி இயக்க வேண்டும் என்று விளக்குகின்றன. (vim whos.sh; chmod +x whos.sh; ./whos.sh)  []     []   கலைச்சொற்கள்: அடிப்படை கணக்கீட்டு வினைகள் - Basic arithmetic operations  முதன்மை நினைவகம் - Primary memory  இரண்டாம் நினைவகம் - Secondary memory  மெய்நிகர் நினைவகம் - Virtual memory or swap memory  தற்காலிக கோப்பமைவு - Temporary file system  எண்கள் - Numbers, Integers, Floats, Double etc.  உரைகள் - Texts, Strings  அச்சுப்பொறிகள் - Printers  காப்புப்படி ஒலிநாடாக்கள் - Backup tapes  கம்பியுள்ள வலையம் - Wired network  கம்பியில்லா வலையம் - Wireless network  வரையறுக்கப்பட்ட வலைய அடுக்குகள் - predefined network layers  வலையக்கருவி இயக்கிகள் - network device drivers  ஏரணம் - logic  தரவுகள் - data  வெளியீடுதல் - declaration  சுழி - zero      (கற்போம்…)      செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - 3 செயல் வகைகள், நிலைகள்   பெற்றோர் குழந்தை இல்லார் உதவியர்  என்றே தளத்தில் உண்டாம் செயல்கள்  ஓட்டம் நிற்றல் உள்ளுறை உறக்கம்  குறுக்கிடு மற்றும் குறுக்கிடா நிலைகளே.  - நிரற்பா  3   நிரற்பா விளக்கம்: நிரற்பாவினை மனப்பாடம் செய்து வைத்துக் கொண்டால் இலினக்சு இயங்குதளத்தின் செயல்களையும், அவற்றின் நிலைகளையும் எளிதில் நினைவுக்கு கொண்டுவர இயலும். இங்கு பெற்றோர் என்பது parent process ஐயும், குழந்தை child process, இல்லார் என்பது orphan process உதவியர் என்பது daemon process ஆகியவறையும் குறிப்பிடுகிறது. எனவே நான்கு முதன்மையான செயல்கள் உள்ளன. அவற்றின் நிலைகளாக‌ ஓட்டம் (running or active state), நிற்றல் (stopping state), உள்ளுறை (dead or zombie state), உறக்கம்(sleeping state) உறக்கத்தின் துணை நிலைகளாக‌ குறுக்கிடு உறக்கம்(interruptable sleep state), குறுக்கிடா உறக்கம்(uninterruptable sleeping state) ஆகியவை உள்ளன.   பெற்றோர் செயல் (Parent Process) என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட செயல்களைத் தன் செயல் நிறைவேறுவதற்காகத் தன்னகத்தே கொண்டதாகும்.  குழந்தை செயல் (Child Process) என்பது வேறொரு செயலானது உருவாக்கிய செயலாகும்.  பெற்றோர் செயலானது முடிந்த பிறகும், குறிப்பிட்ட குழந்தை செயல் தன்னாலாகச் செயல்பட்டுக் கொண்டிருத்தல் இல்லார் செயல் (Orphan Process) அல்லது பெற்றோர் இல்லாச் செயல் எனப்படும்.  ஏதேனும் ஒரு செயலின் உதவிக்காக பின்புலத்தில் செயல்படுவது உதவியர் (Daemon Process) செயல் எனப்படும்.  உள்ளுறை நிலை (Zombie state) என்பது, ஒரு குறிப்பிட்ட பெற்றோர் செயலானது முடிந்த பிறகும், அதனுடைய அட்டவணையில் இருக்கும் ஒரு செயல். இது செயலின் ஒரு செத்த நிலை.  ஓட்டம் என்பது தற்போது செயலிலும், உறக்கம் என்பது முன்னர் செயலிலும் இருந்த நிலைகளாகும். நிற்றல் என்பது முடிந்த (Stop state) நிலையாகும்.   விளக்கப்படம்:  பின்வரும் விளக்கப்படங்கள் இந்த செயல்களையும், அவற்றின் நிலை மற்றும் துணை நிலைகளை விளக்கும் வண்ணம் அமைந்துள்ளன.  [] []   ஐயம்: ஷெல் ஸ்கிரிப்ட்டுக்களை ஆண்ட்ராய்டு கைபேசியில் இயக்க முடியுமா?  தீர்வு: Terminal emulator என்னும் செயலியைப் பயன்படுத்தி echo முதலான கட்டளைகளை இயக்கலாம். http://www.appsapk.com/android-terminal-emulator/ என்ற தொடுப்பில் அது கிடைக்கிறது. உதவிப்பக்கமும் செயலியில் உண்டு. ஆனால இது அனைத்துக் கட்டளைகளையும் செய்யாது. அனைத்து வகையான நிரல்களையும் இயக்கிப்பார்க்க ஆண்ட்ராய்டு பேசியானது root அல்லது hack செய்யப்பட வேண்டும்.  []   Complete Linux Installer http://www.appsapk.com/complete-linux-installer/ என்ற தொடுப்பில் உள்ள பொதியினை பதிவிறக்கி நிறுவிக்கொண்டால், அனைத்து வகையான குறுநிரல்களையும் எழுதி மகிழலாம். ஆனால் இது புதியவர்களுக்கு உகந்தத‌ல்ல. ஏதேனும் தவறான நிரல் எழுதி கணிப்பொறியில் பழுதேற்பட்டால், அதை மீண்டும் நிறுவிக் கொள்ளலாம். ஆனால் கைபேசியில் பழுதேற்பட்டால் மீண்டும் அனைத்தும் மீண்டு வருமா என்பது மிகப்பெரும் ஐயமே.  []   சின்ன சின்ன நிரல்களை எழுதி மகிழலாம். பெரிய நிரல்களுக்கு இது போன்ற ஆண்ட்ராய்டு செயலிகள் வழிவகுத்தாலும், அவை தொழிற்நுட்ப வகையில் பரிந்துரைக்கப்படுவதில்லை. (Professionally not recommended)  குறுநிரல் 3: (Terminal Emulator மூலம் இயக்கலாம்)  #!/bin/bash #Script that displays today’s date echo "Today's date is:"  date +"%A, %B %-d, %Y" நிரல் விளக்கம்:  Terminal emulator மூலம் இயக்கும் பொழுது, cd sdcard என்று கொடுத்து, ஒரு அடைவினை (directory/folder) உருவாக்கிக் கொள்ளவும். mkdir script என்ற கட்டளை இதற்கு உதவும். பின்பு cd script என்பதற்குள் சென்று வேண்டிய நிரல்களை எழுத்தத் தொடங்கலாம். கைபேசியை root செய்தால்தான் உரைத் தொகுப்பான்களை கட்டளை வரியில் பயன்படுத்த முடியும். இல்லையில் quick office மூலம் நிரலைத் தொட்டெழுதி/தட்டெழுதி அதை Terminal emulatorஇல் இயக்கலாம். இதன் வெளியீடானது, நிரல் இயக்கிய கிழமை, மாதம் தேதி, ஆண்டு ஆகியவற்றை வெளியிடும். எடுத்துக்காட்டாக, நிரல் அக்டோபர் 1 அன்று இயக்கப்பட்டால் வெளியீடு இவ்வாறு கிடைக்கும். Today’s date is: Wednesday, October 1, 2014  குறுநிரல் 4 : (Terminal Emulator மூலம் இயக்கலாம்)  இந்த நிரல், எவ்வாறு ஷெல் ஸ்கிரிப்ட் மூலமாக ஒரு எச்டிஎம்எல் கோப்பினை உருவாக்கப் பயன்படுகிறது என்று பார்க்கலாம். எடுத்துக்காட்டாக எச்டிஎம்எல் கோப்பு பின்வருமாறு வைத்துக் கொள்வோம். இதை எவ்வாறு ஷெல் ஸ்கிரிப்ட் மூலமாகச் செய்யலாம் எனப் பார்க்கலாம்.           The title of your page            Your page content goes here. குறுநிரல் 4 - பதிப்பு 1: (Terminal Emulator மூலம் இயக்கலாம்)  #!/bin/bash # make_page - A script to produce an HTML file echo "" echo "" echo "  " echo "  The title of your page" echo "  " echo "" echo "" echo "" echo "  Your page content goes here." echo "" echo "" இந்த நிரலை இயக்கும் பொழுது, (கோப்பினை இப்பெயரில் சேமிக்க வேண்டும் என்பதறிக.) main_page.sh > filename.html என்று கொடுத்தால் அதே அடைவில் HTML கோப்பு உருவாகும். நாம் பார்த்த வெறும் echo கட்டளை கொண்டு அருமையாக ஒரு HTML நிரல் தயாரிக்கப்பட்டுவிட்டது.   நிரல் 4 - பதிப்பு 2 (Terminal Emulator மூலம் இயக்கலாம்)  இதே நிரலை echo கட்டளை இல்லாமலேயே கீழ்க்காணுமாறு எழுதி இயக்கலாம். இதில் cat கட்டளை ஒரு கோப்பினை உருவாக்கப் பயன்படுகிறது. _EOF_ என்பது End Of File என்பதைக் குறிக்கிறது.  #!/bin/bash # make_page - A script to produce an HTML file cat << _EOF_          The title of your page            Your page content goes here. _EOF_ நிரலை இயக்கும் நேரம், main_page.sh > filename.html என்று கொடுத்தால் ஒரு HTML கோப்பு உருவாகும்.   கலைச்சொற்கள்: (Technical terms) பெற்றோர் – Parent process  குழந்தை – child process  இல்லார் – orphan process  உதவியர் – daemon process  ஓட்டம் – running state  நிற்றல் – stopping state   உள்ளுறை – zombie state  உறக்கம் – sleeping state  குறுக்கிடு – interruptable sleep state  குறுக்கிடா – uninterruptable sleep state  அடைவு – Folder or directory    (கற்போம்...)    செம்மொழியில்கற்போம்ஷெல்ஸ்கிரிப்ட் – 4 இயங்குதளத்தின்ஏற்றநிலை, மாறிகளைப் பயன்படுத்துதல்   இயங்கு தளத்தின் ஏற்ற நிலையில்  முதன்மைக் கோப்பாம் மையம் தொடக்கம்  ஏழ்நிலை தெரிந்து எடுத்தி யாங்கு  இணைப்புக் கோப்பு எழிலுற‌ வருமே.  -நிரற்பா 4   நிரற்பா விளக்கம்: லினக்சு இயங்குதளத்தின் ஏற்ற நிலையில் அதாவது boot ஆகும் பொழுது முதலிலே மையக்கோப்பான kernel கோப்பு ஏற்றப்படுகிறது. பின்பு தொடக்கம் எனப்படும் initrd.img கோப்பு ஏற்றப்படுகிறது. பின்பு இயங்குதளத்தின் ஏழு நிலைகளில் எந்த நிலையானது அமைக்கப்பட வேண்டும் என்று /etc/inittab கோப்பில் கட்டளை இருக்கிறதோ அந்த நிலையில் இயங்குதளம் தொடங்கப் படுகிறது. வன்வட்டு அமைவுகளைக் கொண்ட /etc/fstab என்ற இணைப்புக் கோப்பில் உள்ளவாறு இயங்குதளம் தனது வேலைகளைச் செய்ய தொடங்குகிறது.   மாறிகளைப்பயன்படுத்துதல்: (Variable usage)  மாறிகளில் பொதுவாக இரண்டு வகைகள் உண்டு. ஒன்று env என்ற கட்டளை மூலம் கிடைக்கும் environment variable எனப்படும் சூழல் மாறிகள். இரண்டாவது பயனர் தனது நிரலில் வரையறை செய்யும் மாறிகள் (user-defined variables). # வரியில் env என்று கொடுக்க அனைத்து சூழல் மாறிகளும் கிடைக்கப் பெறும்.   ஐயம்:ஷெல்ஸ்கிரிப்ட்மூலம்தீங்குவிளைவிக்கும்நிரல்களைஎழுதமுடியுமா?   தீர்வு:கருத்துஅடிப்படையில்பார்த்தால்தீங்குவிளைவிக்கும்நிரல்களை (destruction scripts) நேரடியாகவோமறைமுகமாகவோஎழுதஇயலும்.ஒருபொறியின்மூலப்பயனராக (root user)இருப்பின்பொறிக்குஎதுதீங்குசெய்யும்என்றுஅறிந்துநிரலமைப்பதுஇன்றியமையாதது மூலப்பயனர்ஏதேனும்தவறுசெய்தால்அதைவேறுயாராலும்மீளமைக்க(undo) முடியாது.  மாற்றீடுதல் நிரல் 5: (Terminal Emulatorல்எழுதிஇயக்கலாம்)  இந்த நிரலில் title என்பது மாறியாக அமைக்கப்பட்டுள்ளது. அந்த மாறியினை அழைக்கும் பொழுது $title என்று அமைக்கப்படவேண்டும்.  #!/bin/bash # make_page - A script to produce an HTML file title="My System Information" cat<<- _EOF_         $title

$title

_EOF_ நிரலின் வெளியீடானது பின்வருமாறு அமையும். (chmod +x niral5.sh; ./niral5.sh) []          சூழல்மாறிகள்:  பின்வரும் நிரல்களில் சூழல் மாறிகளை எங்ஙனம் பயன்படுத்தலாம் என்பதைக் காண்போம்.  நிரல் 6: (Root செய்யப்பட்ட‌ Terminal Emulatorல்எழுதிஇயக்கலாம்)  இங்கு $HOSTNAME என்பது பொறியின் பெயராகிய environment variable ஐக் குறிக்கிறது.  #!/bin/bash # make_page - A script to produce an HTML file title="System Information for" cat<<- _EOF_         $title $HOSTNAME

$title $HOSTNAME

_EOF_ நிரலின் வெளியீடானது பின்வருமாறு அமையும். (chmod +x niral6.sh; ./niral6.sh)  []   நிரல் 7: (Root செய்யப்பட்ட‌ Terminal Emulatorல்எழுதிஇயக்கலாம்)  இந்நிரலில் date என்ற கட்டளையும், HOSTNAME, USER ஆகிய சூழல் மாறிகளும் பயன்படுத்தப் பட்டிருக்கின்றன.  #!/bin/bash # make_page - A script to produce an HTML file TITLE="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Updated on $RIGHT_NOW by $USER" cat<<- _EOF_         $TITLE

$TITLE

$TIME_STAMP _EOF_ கீழ்க்கண்ட கட்டளை வரிகளைக் கொண்டு இயக்க, நிரலின்  வெளியீடு படத்தில் உள்ளது போல் கிடைக்கும்.  #chmod +x niral7.sh #./niral7.sh []   இயங்கு தளத்தில் ஏழு வகை நிலைகள் அவற்றின் பயன்பாடுகளை அடுத்த தலைப்பில் பார்க்கலாம்.   கலைச்சொற்கள்: (Technical terms) இயங்குதளம் – Operating system  ஏற்றநிலை – Booting stage  முதன்மைக்கோப்பு – First file  மையம் – kernel (core of the operating system)  தொடக்கம் – initrd file  ஏழ்நிலை – seven run levels of the operating system  இணைப்புக்கோப்பு - /etc/fstab file (file system table configuration file)  மூலப்பயனர், வேர்ப்பயனர் - root user  மீளமைத்தல் - undo  அழிப்புநிரல் - destruction script  மாறிகள் - variables  சூழல்மாறிகள் - environment variables  மாற்றீடுதல் - Substitution  (கற்போம்…)     செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் – 5 இயங்குதளத்தின் ஏழு ஓடு நிலைகள்     நிறுத்தம் ஒற்றைப் பயனர் வலையிலா  பல்பய னர்வலை யுள்பல் பயனர்  பிற்கால‌ உயர்வு பயனர் வரைகலை  மறுதொடக் கம்இயங் குநிலை ஏழே.  - நிரற்பா 5   நிரற்பா விளக்கம்: இப்பாவில் இயங்குதளத்தில் உள்ள ஏழு நிலைகள் விளக்கப்பட்டுள்ளன.  நிறுத்தம் என்பது init 0 என்ற நிலையைக் குறிக்கிறது. இது shutdown செய்யப்பட்ட நிலையாகும். ஒற்றைப்பயனர் என்பது single user என்பதையும் வலையிலா பல்பயனர் என்பது multiuser without network என்பதையும், வலையுள் பல்பயனர் என்பது multiuser with network என்பதையும், பிற்கால உயர்வு future enhancement or unused என்பதையும், பயனர் வரைகலை என்பது GUI-Graphical User Interface என்பதையும், மறுதொடக்கம் என்பது restart என்பதையும் குறிக்கிறது.  init 0 – shutdown init 1 – single user mode init 2 – multi user mode without network init 3 – multi user mode with network init 4 – unused for future enhancement purpose init 5 – XII or GUI mode init 6 – reboot     கீழே உள்ள படம் இலினக்சின் ஏழு ஓடு நிலைகளையும் விளக்கும் வண்ணம் உள்ளது.     #vim /etc/inittab என்ற கோப்பினை திறந்து இதனை அறியலாம். உள்ளிருப்பாக Red Hat Enterprise Linux இல் ஓடு நிலை 3 அல்லது 5 ஆனது இருக்கும். Ubunt இல் ஓடுநிலை 3 ஆக இருக்கும்.  []   நிரல் 8  #!/bin/bash # make_page - A script to produce an HTML file TITLE="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Updated on $RIGHT_NOW by $USER" cat <<- _EOF_                            $TITLE                        

$TITLE

    

$TIME_STAMP      _EOF_ மேலேயுள்ள நிரலில் எவ்வாறு மாற்றிடுதல் உள்ளது என்பதைக் காண்போம். இங்கு RIGHT_NOW, TIME_STAMP ஆகிய‌ இரண்டு மாறிகள் பயன்படுத்தப்பட்டுள்ளன. இதன் மூலம் இந்த நிரலானது எப்பொழுது மேம்படுத்தப்பட்டுள்ளது (updated) என்பதை அறியலாம்.  நிரல் 9:  #!/bin/bash # system_page - A script to produce an system information HTML file ##### Constants TITLE="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Updated on $RIGHT_NOW by $USER" ##### Functions function system_info {     # Temporary function stub     echo "function system_info" } function show_uptime {     # Temporary function stub     echo "function show_uptime" } function drive_space {     # Temporary function stub     echo "function drive_space" } function home_space {     # Temporary function stub     echo "function home_space" } ##### Main cat <<- _EOF_             $TITLE             

$TITLE

      

$TIME_STAMP

      $(system_info)       $(show_uptime)       $(drive_space)       $(home_space)       _EOF_ function show_uptime {     echo "

System uptime

"     echo "
"

    uptime

    echo "
" }         function drive_space {     echo "

Filesystem space

"     echo "
"

    df

    echo "
" } function home_space {     echo "

Home directory space by user

"     echo "
"

    echo "Bytes Directory"

    du -s /home/* | sort -nr

    echo "
" } function system_info {     echo "

System release info

"     echo "

Function not yet implemented

" } நிரல் துண்டுகள் (Functions):  இந்நிரலில் ஃபங்ஷன்கள் என்னும் நிரல் துண்டுகள் அறிமுகப்படுத்தப்பட்டுள்ளன. அதாவது ஒரு பெரிய நிரலை சிறிதுசிறிதாக உடைத்து, ஒரு சிறிய வேலையினைச் செய்து முடிப்பதே நிரல் துண்டு எனப்படுகிறது. (a function is a piece of a program, which is used to perform a particular task in the main program)        $(system_info)       $(show_uptime)       $(drive_space)       $(home_space) இங்கு நான்கு நிரல் துண்டுகள் பயன்படுத்தப்பட்டுள்ளன. system_info பொறியினைப் பற்றிய செய்திகளைத் தருவதாக அமைந்திருக்கிறது. show_uptime என்னும் நிரல் துண்டானது, பொறியானது எவ்வளவு நேரம் செயல்பாட்டிலிருக்கிறது என்ற செய்தியைத் தருகிறது. drive_space நிரல் துண்டில் வன்வட்டின் அளவு காலியிடம் போன்றவை வரையறுக்கப்பட்டுள்ளது. home_space என்ற துண்டில் user’s home directory ன் அளவு விளக்கப்பட்டுள்ளது.  நிரல் துண்டின் பயன்பாடுகள் (usage of functions in shell script):  1. ஒரு குறிப்பிட்ட வேலையினை மட்டுமே செய்யப்பயன்படுகிறது.  2. மீண்டும் மீண்டும் எழுத வேண்டிய நிரல்வரிகளை ஒரே முறை எழுதி மீண்டும் மீண்டும் முதன்மை நிரலில் இருந்து அழைக்கலாம்.  3. நிரலர்களின் பணி எளிதாகிறது.  4. பொறியும் எளிதில் நிரல்வரிகளைப் புரிந்து குழப்பமின்றி செயல்பட உதவுகிறது.  5. வருங்கால நிரல் மேம்பாட்டிற்கு உதவுகிறது.  6. நிரலினை புதியவர்கள் படிக்கும் பொழுது, எளிதில் புரியும் வண்ணம் அமைகிறது.   கலைச்சொற்கள்: நிறுத்தம் – init 0 (shutdown or halt)  ஒற்றைப் பயனர் – single user (run-level 1)  வலையிலா பல்பயனர் – multiuser without network (run-level 2)  வலையுள் பல்பயனர் – multiuser with network (run-level 3)  பிற்கால‌ உயர்வு – future enhancement (run-level 4)  பயனர் வரைகலை – Graphical user interface (GUI run-level 5)  மறுதொடக்கம் – restart (run-level 6)  நிரல் துண்டு - functions  (கற்போம்)     செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் - 6 செயற்பாடு அல்லது  நிரல்துண்டு (Functions)   பெருஞ்செயல் ஒன்றைப்  பிரித்து, படுத்தும்  சிக்கல் வரிகளைச் சிறுதுண் டாக்கி  வேண்டும் பொழுதில் விரைவாய் அழைக்க‌க்  கட்டளை வரிகுறைப் பதாம்நிரல் துண்டே.  - நிரற்பா  6  நிரற்பா விளக்கம்: பெரிய வேலையைச் செய்யக் கூடிய நிரலினை சிறிய துண்டுகளாக்கி தேவையான பொழுது அழைத்துப் பயன்படுத்திக் கொள்வதால் கட்டளை வரிகள் குறையும். விரைவாகச் செயல்கள் முடியும்.  நிரல் 10:  #!/bin/sh # A simple script with a function... add_a_user() {   USER=$1   PASSWORD=$2   shift; shift;   # Having shifted twice, the rest is now comments ...   COMMENTS=$@   echo "Adding user $USER ..."   echo useradd -c "$COMMENTS" $USER   echo passwd $USER $PASSWORD   echo "Added user $USER ($COMMENTS) with pass $PASSWORD" } ### # Main body of script starts here ### echo "Start of script..." add_a_user bob letmein Bob Holness the presenter add_a_user fred badpassword Fred Durst the singer add_a_user bilko worsepassword Sgt. Bilko the role model echo "End of script..." நிரல் விளக்கம்:  இந்நிரலில் பயனரையும் அதற்குரிய கடவுச்சொல்லையும் எவ்வாறு நிரல் துண்டு கொண்டு அமைப்பதைக் காண்கின்றோம். ஒரு சிறிய நிரல் துண்டானது மீண்டும் மீண்டும் அழைக்கப்பட்டு பல்வேறு பயனர்களையும் அவற்றிற்குரிய கடவுச்சொற்களையும் எளிதில் அமைக்க வழிவகுக்கிறது. கீழே இந்நிரலில் அழைக்கப்பட்டுள்ள மாற்றிடும் மாறிகளைக் காண்கின்றோம். இங்கு ஆறு மாறிகள் கையாளப்படுகின்றன. அவை பின்வருமாறு  $1=bob $2=letmein $3=Bob $4=Holness $5=the $6=presenter   நிரல் 11:  #!/bin/sh myfunc() {   echo "I was called as : $@"   x=2 } ### Main script starts here echo "Script was called with $@" x=1 echo "x is $x" myfunc 1 2 3 echo "x is $x" நிரல் விளக்கம்:  இங்கு myfunc() என்பது நிரல் துண்டாகும். அது முதன்மை நிரலில் (main program) இருந்து அழைக்கப்படுகிறது. இந்நிரல் மூலம் நாம் எவ்வாறு ஓரே மாறியானது முதன்மை நிரலிலும், துண்டு நிரலிலும் மாறிமாறி அழைக்கப்படுகின்றது என்பதைக் காண்கிறோம்.  நிரல் 12:  #!/bin/sh myfunc() {   echo "\$1 is $1"   echo "\$2 is $2"   # cannot change $1 - we'd have to say:   # 1="Goodbye Cruel"   # which is not a valid syntax. However, we can   # change $a:   a="Goodbye Cruel" }   ### Main script starts here a=Hello b=World myfunc $a $b echo "a is $a" echo "b is $b" நிரல் விளக்கம்:  நிரல் 11 இல் இருப்பது போன்றே இந்நிரலிலும் நிரல் துண்டின் மூலமாக‌ மாறியினை எப்படி வேறுவகையாகப் பயன்படுத்துவது என்று விளக்கப்பட்டுள்ளது. ஆகவே மேற்கூறிய‌, நிரல்களின் மூலமாக கொடுக்கப்பட்ட உள்ளீடுகள் எவ்வாறு வேறுவகையாக நிரல் வெளியீட்டில் கிடைக்கின்றன என்பது அறியப்படுகின்றது.  நிரல்களை இயக்கும் முறை: நிரல்களின் வெளியீடுகள் எதுவும் இங்கு கொடுக்கப்படவில்லை. நிரல்களை எப்பொழுதும் போல் உரைத்திருத்தியில் எழுதி filename.sh என்று சேமித்து ./filename.sh என்று கொடுக்க வெளியீடு கிடைக்கும். இந்நிரல்களை Terminal emulator இல் இயக்கிப்பார்ப்பதைக் காட்டிலும், இலினக்சு இயங்குதளத்தில் இயக்கிப்பார்ப்பது நல்லது. இலினக்சு இயங்குதளத்தில் நாம் பயன்படுத்தும் பல கட்டளைகள் குறுநிரல்கள் அனைத்திலும் நிரல் துண்டுகள் மிகுதியாகப் பயன்படுத்தப்பட்டிருக்கின்றன.  நிரல்களின் தவறுகளை வரிவரியாய்ப் பார்க்க sh –vx ./filename.sh என்ற கட்டளைவரி கொண்டு இயக்கிப்பார்க்கலாம்.   கலைச்சொற்கள்: செயற்பாடு – functions  நிரல்துண்டு – functions  சிக்கல்வரிகள் – complex instructions  பெருஞ்செயல் – big task or complex task  முதன்மை நிரல் – main program  உரைத்திருத்தி – text editor    (கற்போம்...)    செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட் 7 - கட்டுப்பாட்டு அமைவுகள் (if condition)   இருந்தால் பிறகு இஃதே  நிகழும்  இலையெனில் மற்றவை இயங்கும்; இருந்தால்   கூடு  இல்லை; அடுக்கு இருந்தால்   உண்டு; இருந்தால் ஏணியும் உண்டே.  -நிரற்பா 7  நிரற்பா விளக்கம்: இருந்தால் என்பது இப்பாடலில் if condition ஐக் குறிக்கிறது. If condition சரியாக இருந்தால் ஒன்றும், தவறாக இருந்தால் பிரிதொன்றும் நடக்கும். கூடு என்பது nested if statement ஐக்குறிக்கிறது. உயர்நிலை மொழிகளான சி,சி++ உள்ளது போன்று இதில் nested if statement கிடையாது. அடுக்கு இருந்தால் என்பது elif statement ஐக்குறிக்கிறது. அடுக்கடுக்கான elif statement கள் சேர்ந்து இருந்தால் ஏணி அதாவது elif ladder ஐ உருவாக்குகிறது. ஏற்கனவே சி, சி++ உயர்நிலை மொழி கற்றவர்களுக்கு இது எளிதில் புரியும். மற்றவர்களுக்குப் புரியும் வண்ணம் கீழே படம் கொடுக்கப் பட்டுள்ளது.  []     குறிப்பிட்ட கட்டளையானது சரிபார்க்கப்பட்டு, சரியெனில் ஒன்று அல்லது ஒன்றுக்கு மேற்பட்ட கட்டளைவரிகள் இயக்கப்படும். தவறெனில் பிறிதொரு வகையான கட்டளை அல்லது ஒன்றுக்கு மேற்பட்ட கட்டளைவரிகள் இயக்கப்படும்.  கீழ்க்காணும் அமைப்பு இதனை எளிதாக விளக்குகிறது.  முதல் வகையான if condition syntax:  # First form   if condition ; then      commands  fi   இரண்டாம் வகையான if condition syntax:  # Second form   if condition ; then      commands  else     commands  fi   மூன்றாம் வகை if condition syntax:  # Third form   if condition ; then      commands  elif condition ; then      commands  fi   முதல்வகையான இருந்தால் கட்டளையினை, if statement இல்லாமலும் கையாளலாம். test என்ற keyword இங்கு if க்கு மாற்றாகப் பயன்படுத்தப்பட்டிருக்கிறது. இரண்டாவது # Second form இல் []சதுர அடைப்புக்குறிகள் பயன்படுத்தப்பட்டிருக்கின்றன.    # First form   test expression    # Second form   [ expression ]            எளிய எடுத்துக்காட்டு:  நிரல் 13 பதிப்பு 1:  if [ -f .bash_profile ]; then     echo "You have a .bash_profile. Things are fine." else     echo "Yikes! You have no .bash_profile!" fi   இங்கு இரண்டாம் வகையான if condition கையாளப்பட்டுள்ளது. –f என்பது குறிப்பிட்ட கோப்பானது உள்ளதா இல்லையா என்பதற்காக அமைக்கப்பட்டுள்ளது. fi என்பது if condition முடிவடையும் பொழுது கொடுக்க வேண்டிய அமைப்பாகும். உயர் நிலை மொழிகள் போன்று { } braces இங்கு பயன்படுத்தப்படுவதில்லை. then என்கிற‌ keywordம் இன்றியமையாதது.  []   மேலேயுள்ள படத்தில் அடுக்கடுக்கான if statement கள் கையாளப்பட்டுள்ளன. இவை decision making எனப்படும் தீர்வறிவதறிவதற்காக பயன்படுத்தப்படுகின்றன. இது இருந்தால் ஏணி elif ladder என்றழைக்கப்படுகிறது.  பின்வரும் அட்டவணையானது, எவ்வாறு நாம் if statement இல் ஒப்பிட்டுப் பார்த்து, முடிவெடுப்பது என்பதை விளக்குகிறது.  --------------------- --------------------------------------------------------------------- Expression Description -d file  True if file is a directory.  -e file  True if file exists.  -f file  True if file exists and is a regular file.  -L file  True if file is a symbolic link.  -r file  True if file is a file readable by you.  -w file  True if file is a file writable by you.  -x file  True if file is a file executable by you.  file1 -nt file2  True if file1 is newer than (according to modification time) file2  file1 -ot file2  True if file1 is older than file2  -z string  True if string is empty.  -n string  True if string is not empty.  string1 = string2  True if string1 equals string2.  string1 != string2  True if string1 does not equal string2.  --------------------- --------------------------------------------------------------------- நிரல் 13 பதிப்பு 2:  if [ -f .bash_profile ] then     echo "You have a .bash_profile. Things are fine." else     echo "Yikes! You have no .bash_profile!" fi   நிரல் 13 பதிப்பு 3:  if [ -f .bash_profile ] then echo "You have a .bash_profile. Things are fine." else echo "Yikes! You have no .bash_profile!" fi         கீழ்க்காணும் சிறிய நிரல்கள் வெகு எளிதாக விளக்குவதாக அமைந்துள்ளன.  நிரல் 14  if [ $(id -u) = "0" ]; then     echo "superuser" fi         நிரல் 15  if [ $(id -u) != "0" ]; then     echo "You must be the superuser to run this script" >&2     exit 1 fi   பின்வரும் நிரலில், ஒரு நிரல் துண்டில் எவ்வாறு நாம் இருந்தால் கட்டளை வரியைப் பயன்படுத்துவது என்பது விளக்கப்ப‌ட்டுள்ளது.  நிரல் 16  function home_space {     # Only the superuser can get this information       if [ "$(id -u)" = "0" ]; then         echo "

Home directory space by user

"         echo "
"

        echo "Bytes Directory"

            du -s /home/* | sort -nr

        echo "
"     fi   }   # end of home_space         நிரல் 17  #!/bin/bash   number=1   if [ $number = "1" ]; then     echo "Number equals 1 fi   நிரல் 18  #!/bin/bash   number=1   if [ $number = "1" ]; then     echo "Number equals 1" else     echo "Number does not equal 1" fi   நிரல் 19  #!/bin/bash   number=1   set -x if [ $number = "1" ]; then     echo "Number equals 1" else     echo "Number does not equal 1" fi set +x நிரல்களை வழக்கம்போல் உரைத்திருத்தியில் எழுதி இயக்கிப்பார்க்கவும்.   கலைச்சொற்கள்: If condition statement - இருந்தால் கட்டளைவரி  Elif statement - இலையெனில் கட்டளைவரி  Nested if statement - கூடு இருந்தால் கட்டளைவரி  Elif ladder - இருந்தால் ஏணி  (கற்போம்...)    செம்மொழியில் கற்போம் ஷெல் ஸ்கிரிப்ட்– 8 சுழற்சி அல்லது ஆகக்கட்டளை (for loop)   நிரல்களில் பயன்படும் நேரிய அறிக்கை  சுணக்கம் இன்றி சுழற்சியிற் செயற்பட‌  தேவைச் செயல்கள் திரும்பச் செய்யும்  ஆகக் கட்டளை கொண்டு எழுதவே.  - நிரற்பா 8  நிரற்பாவிளக்கம்: ஒரு நிரலில் பயன்படக்கூடிய கட்டளை வரிகள் (program statements), தொடர் செயல்பாடுகள் தங்குதடையின்றி (சுணக்கம் இன்றி) விரைவாகச் செயல்பட‌, குறிப்பிட்ட கட்டுப்பாட்டு செயல்முறை நிறைவடைந்தால் (get satisfied the given condition) தொடர்ந்து சுழற்சிமுறையில் (loop) ஒன்று அல்லது ஒன்றிற்கு மேற்பட்ட கட்டளைகள் (single or multiple statements) இயங்க ஆகக் கட்டளையானது (for statement) உதவுகிறது.  இருந்தால் கட்டளை எடுத்துக்காட்டுகள் (If statement examples)  நிரல் 20:  #!/bin/bash   echo -n "Hurry up and type something! > " if read -t 3 response; then echo "Great, you made it in time!" else echo "Sorry, you are too slow!" fi இங்கு read கட்டளையில் -t 3 என்று கொடுக்கப்பட்டுள்ளது. இங்கு பொறியானது (system) மூன்று நொடிகள் பயனரின் உள்ளீட்டிற்காக (user input) காத்திருக்கும். பயனர் சரியான நேரத்தில் தட்டச்சு செய்தால் if condition satisfied ஆகி Great, you made it in time! என்ற வெளியீடு கிடைக்கும். இல்லையெனில், Sorry, you are too slow! என்ற வெளியீடு கிடைக்கும். வழக்கம் போல் எழுதி இயக்கிப் பார்க்கவும்.       பயனர் செய்யும் தட்டச்சு திரையில் தோன்ற வேண்டாமெனில், read -s கட்டளை கொடுக்கவும். எடுத்துக்காட்டாக, பயனர் தமது கடவுச்சொல்லை தட்டச்சு செய்யும் பொழுது அது திரையில் தோன்றாமலிருக்க இதனைப் ப்யன்படுத்தலாம்.  நிரல் 21:  #!/bin/bash   number=0 echo -n "Enter a number > " read number   echo "Number is $number" if [ $((number % 2)) -eq 0 ]; then echo "Number is even" else echo "Number is odd" fi இந்நிரல் புரிந்து கொள்வதற்கும், அமைப்பதற்கும் மிக எளிது. ஓர் எண் ஒற்றைப் படை எண்ணா அல்லது இரட்டைப் படை எண்ணா என்பதை எளிதாக அறிய உதவும் ஒரு நிரல். வழக்கம் போல் எழுதி இயக்கிப்பார்க்கவும்.  நிரல் 22:  #!/bin/bash   echo -n "Enter a number between 1 and 3 inclusive > " read character if [ "$character" = "1" ]; then     echo "You entered one." else     if [ "$character" = "2" ]; then         echo "You entered two."     else         if [ "$character" = "3" ]; then             echo "You entered three."         else             echo "You did not enter a number"             echo "between 1 and 3."         fi     fi fi இந்நிரல் ஒன்றிலிருந்து மூன்றிற்குள் (மூன்று மற்றும் ஒன்று உட்பட) ஏதேனும் ஒரு எண்ணை உள்ளீடாகக் கொடுத்து அது என்ன என்பதை விளக்குவதாக அமைக்கப்பட்டுள்ளது. இது இருந்தால் அடுக்குக்கட்டளையை (nested if statement) விளக்குவதற்காக கொடுக்கப்பட்டுள்ளது. இதே போன்று ஒரு நிரலமைவைப் பயன்படுத்தி, கொடுக்கப்பட்ட மூன்று எண்களில் பெரியது, சிறியது என்ன (find the biggest or smallest of given three numbers or find the second smallest and second largest numbers) என்பன போன்ற நிரல்களைச் செய்து பார்க்கவும்.    நிரல் 23:  #!/bin/sh # This is some secure program that uses security. VALID_PASSWORD="secret" #this is our password. echo "Please enter the password:" read PASSWORD if [ "$PASSWORD" == "$VALID_PASSWORD" ]; then echo "You have access!" else echo "ACCESS DENIED!" fi இந்நிரல் கொடுக்கப்பட்ட கடவுச்சொல் (password) சரியானதா இல்லையா என்பதை அறியவுதவும் வண்ணம் அமைக்கப்பட்டுள்ளது. இதை உரை ஒப்பீட்டு நிரலாகவும் (string comparison script) கூறலாம். இதன் மூலம் பல்வேறு உரை ஓப்பீட்டு செயல்கள் செய்து பார்க்கலாம்.  ஆகக் கட்டளையின் செயல்முறையினை பின்வரும் படமானது நன்கு எடுத்துரைக்கிறது.  []   முதலில் ஒரு மாறியானது தொடக்க மதிப்பிருத்தல் (initialization) செய்யப்படுகிறது. பிறகு குறிப்பிட்ட மாறியானது சோதனை (testing the condition) செய்யப்பட்டு, சரியெனில் குறிப்பிட்ட சுழற்சியின் உடலானது (body of the loop) ஒருமுறை செய்யப்படுகிறது. தவறெனில் சுழற்சி நிறுத்தப்பட்டு, அடுத்த கட்டளை செயல்படுத்தப்படுகிறது. சோதனையின் விடை சரியாக இருக்கும் வரை குறிப்பிட்ட கட்டளை அல்லது கட்டளைகள் தொடர்ந்து திரும்பத் திரும்ப செய்யப்பட்டுக் கொண்டே இருக்கும். ஆகக் கட்டளையின் பொது அமைவானது (General syntax) கீழ்க்காணுமாறு அமைகிறது.  for var in word1 word2 ... wordN do    Statement(s) to be executed for every word. done பின்வரும் இரண்டு நிரல்களைச் செய்து குறிப்பிட்ட வெளியீடுகள் கிடைக்கின்றனவா எனச் சரிபார்க்கவும்.  நிரல் 24:  #!/bin/bash for var in 0 1 2 3 4 5 6 7 8 9 do    echo $var done வெளியீடு:  0 1 2 3 4 5 6 7 8 9 நிரல் 25:  #!/bin/sh for FILE in $HOME/.bash* do    echo $FILE done வெளியீடு:  /root/.bash_history /root/.bash_logout /root/.bash_profile /root/.bashrc மேலும் சில‌ ஆகக் கட்டளை எடுத்துக்காட்டுகள் (more for loop examples:)  நிரல் 26:  #!/bin/bash for X in red green blue do echo $X done இங்கு X என்ற மாறியில் மூன்று மதிப்புகள் இருத்தப்பட்டு மீண்டும் மீண்டும் எடுக்கப்படுகின்றது. நிரலின் செய்து வெளியீடு காணவும்.  நிரல் 27:  #!/bin/bash colour1="red" colour2="light blue" colour3="dark green" for X in "$colour1" $colour2" $colour3" do echo $X done இங்கு X என்ற மாறியில் மேலும் மூன்று மாறிகள் இருத்தப்பட்டு, அவை திரும்ப அழைக்கப்படுகின்றது.  நிரல் 28:  #!/bin/bash for X in *.html do grep -L '