شل در لینوکس یک محیط واسطه را برای ارتباط شما با سیستم فراهم میکند. شل از شما مقداری را گرفته و محاسبات آن را بر اساس مقدار دریافت شده انجام میدهد. وقتی اجرای برنامه تمام میشه خروجی برای شما نمایش داده میشه.
شل محیطی ست که میتونه دستورات برنامه ها و اسکریپت های شما رو اجرا کنه. همونطور که سیستم عامل های مختلفی هست شل های مختلفی هم وجود داره.
Shell Prompt
علامت شل $ می باشد که وقتی ظاهر شد شما میتونید دستورات لازم رو وارد کنید. بعد از اینکه دستور رو نوشتید و اینتر رو زدید, شل مقدار ورودی رو از شما میگیره. هر دستور در لینوکس به خودی خود یک داده از نوع رشته ست که به صورت پیوسته و ناگسسته نوشته میشه.
دستور زیر تاریخ و ساعت رو به شما نشون میده:
1 2 |
blog@Arshatech:~$ date Tue Jun 24 20:27:28 IRDT 2018 |
شما میتونید علامت شل رو با توجه به توضیحاتی که در خط فرمان لینوکس بخش محیط لینوکس گفته شد تغییر بدید.
انواع شل
در یونیکس دو نوع اصلی شل وجود داره:
- شل Bourne که وقتی ازون استفاده میکنید علامت $ رو خواهید دید.
- شل C که وقتی ازش استفاده میکنید علامت % رو خواهید دید.
هر کدوم از مواردی که گفته شد خود زیر دسته هایی دارند که به اون ها اشاره میکنم:
- Bourne shell یا sh
- Korn shell یا ksh
- Bourne Again shell یا bash
- POSIX shell یا sh
همچنین شل از نوع C:
- C shell یا csh
- TENEX/TOP C shell یا tcsh
شل در اصل در میانه های دهه ۱۹۷۰ توسط Stephan R نوشته شد. اولین شلی که نوشته و ایجاد شد نیز Bourne shell بود. من قصد دارم روی Bourne shell تمرکز کنم که عمومیت بیشتری هم داره.
Shell Scripts
مفهوم اصلی اسکریپت نویسی به زبان بش این هست که شما باید دستورات لینوکس رو با نظم و قاعده خاصی کنار هم بچینید تا بتونید از اون نتیجه مورد نظر خودتون رو بگیرید. یک اسکریپت خوب اسکریپتیه که در اون از comment گذاری به جا استفاده بشه. برای گذاشتن comment توی اون باید از علامت # استفاده کنید. در اسکریپت نویسی حلقه ها شرط ها و آزمون ها وجود دارند. شما میتونید در اون فایا ها رو بخونید یا مقادیری رو در آرایه ذخیره کنید و خلاصه خیلی کارها میشه باهاش کرد. مخصوصا برای مدیریت سرور های لینوکسی اسکریپت نویسی خیلی مفیده. توابع و اسکریپت ها در bash همگی بدون کاموپایل شدن اجرا میشن.
یک مثال
فرض کنید یک فایل با نام test.sh ایجاد کردیم. همه اسکریپت ها با sh. ختم میشن. قبل از وارد کردن متن اسکرپت باید به فایل بگید که این یک فایل از نوع اسکریپت هست. برای این کار باید خط اول اسکریپت با عبارت زیر شروع بشه:
1 |
#!/bin/sh |
این خط به سیستم میگه که فایل ایجاد شده از نوع Bourne shell هست. حالا میتونید متن اسکریپت خودتون رو که شامل چند دستور ممکنه باشه رو به صورت زیر وارد کنید:
1 2 3 |
#!/bin/bash pwd ls |
Comment ها در شل
شما میتونید کامنت هاتون رو در اسکریپت که ممکنه شامل توضیحات یا هر چیز دیگه ای باشه به صورت زیر وارد کنید:
1 2 3 4 5 |
#!/bin/bash # Author: Arshatech # Script follows here: pwd ls |
بعد از نوشتن اسکریپت و بستن فایل نوبت به دادن سطح دسترسی لازم جهت اجرا کردن اسکریپت میرسه:
1 |
blog@Arshatech:~$ chmod +x test.sh |
حالا که اجازه لازم جهت اجرا شدن اسکریپت از سوی شما داده شد میتونید اسکریپت رو به اجرا در بیارید:
1 |
blog@Arshatech:~$ ./test.sh |
بعد از اجرا کردن اسکریپت خروجی مشابه زیر که متشکل از اجرای دو دستور هست به شما داده میشه:
1 2 3 |
/home/user index.htm unix-basic_utilities.htm unix-directories.htm test.sh unix-communication.htm unix-environment.htm |
یک مثال کامل تر
اسکریپتی که در ادامه ملاحظه میکنید از read برای گرفتن ورودی از کاربر استفاده میکنه و بعد یک عبارتی رو در کنار ورودی که کاربر وارد کرده چاپ میکنه:
1 2 3 4 5 6 |
#!/bin/sh # Author: Arshatech echo "What is your name? " read NAME echo "Hello, $NAME" |
بعد از اجرا کردن اسکریپت خروجی مشابه زیر رو دریافت میکنید:
1 2 3 4 |
blog@Arshatech:~$ ./test.sh What is your name? Alex Hello, Alex |