برنامه نویسی شل در لینوکس چیست؟
برنامه نویسی شل در لینوکس چیست؟
معرفی سیستم عامل لینوکس
از آنجایی که معرفی کامل سیستم عامل لینوکس در جزوه های مربوط به لینوکس لایتک ارایه شده است در این بخش تنها به مرور اجمالی از این سیستم عامل اکتفا می کنیم.
- پایدار (Stable)
- مقاوم ((Robust
- ایمن (Secure)
- کارایی بالا (High performance)
سیستم عامل لینوکس کاربردهای متعددی دارد. اما کاربرد اصلی آن در سرورها برای اجرای اپلیکیشن های مختلف و سرویس دهی به کامپیوتر های شبکه میباشد. از سیستم عامل لینوکس می توان به عنوان :
- سیستم عامل شخصی (Personal work)
- وب سرور (Web Server)
- محیطی برای برنامه نویسی (Software Development Workstation)
- سرویس دهنده گروهی (Workgroup Server)
- مراکز داده (Data Center)
- و بسیاری موارد دیگر ...
استفاده کرد.
کاربرد اصلی لینوکس در مراکز داده میباشد. مراکز داده محیط هایی هستند که در آنها تعداد زیادی سرور طبق آرایش خاصی چیده شده است و سرویسهای مختلفی ارائه میکنند.
|
ساختار پایه سیستم عامل لینوکس
هسته لینوکس (Kernel) چیست؟
به هسته اصلی سیستم عامل لینوکس کرنل میگویند و وظیفه اصلی آن مدیریت کلی سیستم عامل است. این هسته با سخت افزار در ارتباط میباشد و با توجه به حجم بسیار پایین آن، قابلیتهای فراوانی دارد که حتی قابل نصب بر روی گوشی های تلفن همراه نیز میاشد.
قابلیتهای کرنل :
- I/O Management
- Process Management
- Device Management
- File Management
- Memory Management
به بیان دیگر، هر application یا برنامه کاربردی بر روی سیستم عامل برای ارتباط با سختافزار نیازمند رابطی است که این رابط را کرنل برقرار میکند. زمانی که کامپیوتر شما راهاندازی میشود و نیازمند استفاده از تکنولوژی موجود سخت افزاری هستیم این ارتباط توسط هسته سیستم عامل برقرار میشود. به این گونه که بر روی سخت افزار، Device Driverقرار میگیرد که این تکنولوژی سخت افزار به خوبی شناخته میشود و بر روی Device Driver نیز Kernel قرار دارد و در مرحله بعد بر روی Kernel نیز utility و ابزارهای دیگر قرار گرفته اند.
برای برقراری ارتباط با سخت افزار روشهای مختلفی وجود دارد که یکی از آنها GUI یا محیط گرافیکی و دیگری محیط Text میباشد که در این آموزش با محیط text بیشتر کار میکنیم. برای این کار، دستوراتی به Shell ارسال میشود و Shell آنها را تجزیه و تحلیل می کند و با استفاده از امکانات موجود خلاصه ای از فرآیندها وارد سخت افزار میشود و سخت افزار را به کار میگیرد.
Shell را میتوان معادل گارسن یک رستوران در نظر گرفت که درخواستهایی به آن فرد ارایه میشود و گارسن با استفاده از روشهایی، سرویس مورد نظر ما را آماده میکند و در اختیار کاربر قرار میدهد.
|
نمایی از ساختار هسته لینوکس
شل به شما رابطي به سيستم يونيكس و لينوكس ايجاد مي كند. ورودي را از شما مي گيرد و برنامه ها را براساس آن ورودي اجرا مي كند. هنگامي كه برنامه اي اجرا را پايان مي دهد، خروجي برنامه را نشان خواهد داد.
شل محيطي است كه مي توان در آن دستورات، برنامه ها و اسكريپت هاي شل را اجرا كرد. انواع مختلفي از شل وجود دارد، درست همانند اينكه انواع مختلفي سيستم عامل وجود دارد. هر نوع از شل داراي مجموعه دستورات و توابع سازماندهي شده خود مي باشد.
shell Prompt
prompt علامت $ كه پرامپت دستور نام دارد توسط شل ارايه مي شود. هنگامي كه پرامپت نشان داده مي شود، مي توان يك دستور را تايپ كرد.
اين شل ورودي شما را پس از فشردن كليد Enter مي خواند. شل دستوري كه مي خواهيد اجرا كنيد را با توجه به اولين كلمه ورودي شما تعيين مي كند. گفتني است يك كلمه مجموعه اي پشت سر هم از كاراكترها مي باشد. Spacesها و تب ها كلمات را از يكديگر جدا مي سازند.
مثال زير، دستور date است كه تاريخ و ساعت جاري را نشان مي دهد:
date$
Thu Jun 25 08:30:19 MST 2009
مي توان پرامپت دستور خود را با استفاده از متغير محيطي PS1 سفارشي سازي كرد كه در فصل مربوط به محيط ها تشريح مي شود.
انواع شل
در لينوكس دو نوع اصلي شل وجود دارد:
- Bourne shell: اگر از شل نوع Bourne استفاده مي كنيد، پرامپت پيش فرض كاراكتر $ است.
- C shell: اگر از شل نوع C استفاده كنيم، پرامپت پيش فرض كاراكتر % است.
چندين زيرمجموعه براي Bourne Shell وجود دارد كه در زير ليست شده است:
- Bourne shell ( sh)
- Korn shell ( ksh)
- Bourne Again shell ( bash)
- POSIX shell ( sh)
شل هاي نوع C عبارتند از:
- C shell ( csh)
- TENEX/TOPS C shell ( tcsh)
شل اصلي يونيكس در اواسط دهه ١٩٧٠ توسط Stephen R. Bourne هنگامي كه در آزمايشگاه AT&T Bell در نيوجرسي بود نوشته شد.
شل Bourne اولين شلي بود كه در سيستمهاي يونيكسي ظاهر شد، بنابراين، به آن "the shell" گفته مي شود. يعني وقتي مي گوييم شل منظور همان Bourne shell است.
Bourne shell معمولا تحت عنوان /bin/sh بر روي نسخه هاي مختلف يونيكس و لينوكس نصب مي شود. به همين خاطر، مي توان شل را براي نوشتن اسكريپت ها جهت استفاده بر روي انواع مختلف لينوكس استفاده كرد.
در اين مجموعه آموزشي قصد داريم تا اكثر مفاهيم شل براساس Borne Shel را پوشش دهيم.
ویدئوهای آموزشی شل اسکریپت مهندس حاجی غلامعلی و مهندس وهاب شالچیان
با امکان شرکت در آزمون و دریافت گواهینامه
Shell Scripts
مفهوم اصلي شل اسكريپت ليستي از دستورات است كه به ترتيب اجرا ليست مي شوند. يك شل اسكريپت مناسب داراي دستوراتي است كه با استفاده از علامت # مراحل را توضيح مي دهد.
تستهاي شرطي مانند اينكه مقدار A بزرگتر از مقدار B مي باشد وجود دارد، حلقه ها امكان اجراي دفعات زيادي از داده را مي دهند، فايلها براي خواندن و ذخيره سازي داده ها و متغيرها براي خواندن و ذخيره سازي داده ها بكار مي روند و اسكريپت ها ممكن است شامل توابع باشد.
شل اسكريپت ها و توابع هر دو تفسير مي شوند. بدين معناست كه آنها كامپايل نمي شوند.
در اين مجموعه آموزش و در چند مرحله مختلف، اسكريپت هاي زيادي نوشته خواهد شد. بدين صورت كه در يك فايل متني ساده تمامي دستورات خود و ساير ساختارهاي موردنياز درج مي شوند كه به محيط شل گفته مي شود كه چه كاري و چ زماني انجام شود.
مثال اسكريپت:
فرض كنيد كه اسكريپت test.sh را ايجاد مي كنيم. توجه دشاته باشيد كه تمامي اسكريپت ها داراي پسوند .sh مي باشند. پيش از افزودن هرچيزي به اسكريپت خود، نياز است تا به سيستم اعلام كنيم كه يك شل اسكريپت آغاز مي شود. اين امر با استفاده از ساختار تعبيه شده انجام مي شود. به عنوان مثال:
bin/sh/!#
اين به سيستم مي گويد كه دستوراتي كه در ارامه مي آيند توسط Bourne shell اجرا مي شود. اين يك shebang نام دارد زيرا نماد # يك هش نام دارد و نماد ! يك بنگ نام دارد.
براي ايجاد يك اسگريپت با سه دستور، در اولين خط shebang را قرار مي دهيم و سپس دستورات را اضافه مي كنيم:
bin/bash/!#
pwd
ls
تفاوت شل اسکریپت با سایر زبانهای برنامه نویسی
در سایر زبانهای برنامه نویسی، دستورات به زبان ماشین ترجمه میشوند. به عبارت دیگر، این زبانها دارای کامپایلر هستند اما در شل اسکریپت، دستورات یک به یک توسط مفسر تفسیر میشوند. زبانهای برنامه نویسی با کامپایل کردن برنامه نوشته شده، باعث افزایش سرعت میشوند، البته این تبدیل به زبان ماشین معایبی نیز دربرخواهد داشت که از آن جمله میتوان به ناسازگاری با انواع سیستمها اشاره کرد. چرا که کدی که برای سیستم 64 بیتی کامپایل میشود با کد سیستم 32 بیتی متفاوت میباشد. اما در شل اسکریپت، چون دستورات تفسیر میشوند، در هر سیستمی قابلیت اجرا وجود دارد.
ویدئوهای آموزشی شل اسکریپت مهندس حاجی غلامعلی و مهندس وهاب شالچیان
با امکان شرکت در آزمون و دریافت گواهینامه