shell چیست؟ (آموزش اسکریپت نویسی)
شل یک محیط واسطه رو برای ارتباط شما با سیستم فراهم میکنه. شل از شما مقداری رو میگیره و محاسبات رو بر اساس اون مقدار برای شما انجام میده. وقتی اجرای برنامه تمام میشه خروجی برای شما نمایش داده میشه.
شل محیطی ست که میتونه دستورات برنامه ها و اسکریپت های شما رو اجرا کنه. همونطور که سیستم عامل های مختلفی هست شل های مختلفی هم وجود داره.
Shell Prompt
علامت شل $ می باشد که وقتی ظاهر شد شما میتونید دستورات لازم رو وارد کنید. بعد از اینکه دستور رو نوشتید و اینتر رو زدید, شل مقدار ورودی رو از شما میگیره. هر دستور در لینوکس به خودی خود یک داده از نوع رشته ست که به صورت پیوسته و ناگسسته نوشته میشه.
دستور زیر تاریخ و ساعت رو به شما نشون میده:
$ date
Tue Jun 24 20:27:28 IRDT 2014
شما میتونید نشان دستورات خودتون رو با توجه به توضیحاتی که در بخش محیط ها گفتم تغییر بدید.
انواع شل
در یونیکس دو نوع اصلی شل وجود داره:
- شل Bourne که وقتی ازون استفاده میکنید علامت $ رو خواهید دید.
- شل C که وقتی ازش استفاده میکنید علامت % رو خواهید دید.
هر کدوم از مواردی که گفته شد خود زیر دسته هایی دارند که به اون ها اشاره میکنم:
- Bourne shell یا sh
- Korn shell یا ksh
- Bourne Again shell یا bash
- POSIX shell یا sh
همچنین شل از نوع C:
- C shell یا csh
- TENEX/TOP C shell یا tcsh
شل در اصل در میانه های دهه 1970 توسط Stephan R نوشته شد. اولین شلی که نوشته و ایجاد شد نیز Bourne shell بود. من قصد دارم روی Bourne shell تمرکز کنم که عمومیت بیشتری داره و حقیقتا هم خودم بیشتر با همین نوع اسکریپت نویسی آشنا هستم.
Shell Scripts
مفهوم اصلی اسکریپت نویسی به زبان بش این هست که شما باید دستورات لینوکس رو با نظم و قاعده خاصی کنار هم بچینید تا بتونید از اون نتیجه مورد نظر خودتون رو بگیرید. یک اسکریپت خوب اسکریپتیه که در اون از comment گذاری به جا استفاده بشه. برای گذاشتن comment توی اون باید از علامت # استفاده کنید. در اسکریپت نویسی حلقه ها شرط ها و آزمون ها وجود دارند. شما میتونید در اون فایا ها رو بخونید یا مقادیری رو در آرایه ذخیره کنید و خلاصه خیلی کارها میشه باهاش کرد. مخصوصا برای مدیریت سرور های لینوکسی اسکریپت نویسی خیلی مفیده. توابع و اسکریپت ها در bash همگی بدون کاموپایل شدن اجرا میشن.
مثالی از اسکریپت
فرض کنید یک فایل با نام test.sh ایجاد کردیم. همه اسکریپت ها با sh. ختم میشن. قبل از وارد کردن متن اسکرپت باید به فایل بگید که این یک فایل از نوع اسکریپت هست. برای این کار باید خط اول اسکریپت با عبارت زیر شروع بشه:
#!/bin/sh
این خط به سیستم میگه که فایل ایجاد شده از نوع Bourne shell هست. حالا میتونید متن اسکریپت خودتون رو که شامل چند دستور ممکنه باشه رو به صورت زیر وارد کنید:
#!/bin/bash
pwd
ls
Comment ها در شل
شما میتونید کامنت هاتون رو در اسکریپت که ممکنه شامل توضیحات یا هر چیز دیگه ای باشه به صورت زیر وارد کنید:
#!/bin/bash
# Author: Triumph
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
بعد از نوشتن اسکریپت و بستن فایل نوبت به دادن سطح دسترسی لازم جهت اجرا کردن اسکریپت میرسه:
$ chmod +x test.sh
حالا که اجازه لازم جهت اجرا شدن اسکریپت از سوی شما داده شد میتونید اسکریپت رو به اجرا در بیارید:
$ ./test.sh
بعد از اجرا کردن اسکریپت خروجی مشابه زیر که متشکل از اجرای دو دستور هست به شما داده میشه:
/home/user
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
یک مثال کامل تر
اسکریپتی که در ادامه ملاحظه میکنید از read برای گرفتن ورودی از کاربر استفاده میکنه و بعد یک عبارتی رو در کنار ورودی که کاربر وارد کرده چاپ میکنه:
#!/bin/sh
# Author: Triumph
# Copyright(c): linusec.blog.ir
echo "What is your name? "
read NAME
echo "Hello, $NAME"
بعد از اجرا کردن اسکریپت خروجی مشابه زیر رو دریافت میکنید:
$./test.sh
What is your name?
Ali
Hello, Ali
$