مواد لازم براس شروع Shell Script نویسی :
اطلاعات از کرنل
اطلاعات از شل (پوسته متنی )
اطلاعات از پردازش
اطلاع در باره تغیر مسیر دادن و تونل ها و فیلتر (Redirectors , Pipes, Filters ) ......
کرنل چیه : کرنل قلب لینوکسه .کرنل منابع سیستم عامل را مدیریت میکنه . منابع سیستم عامل مثل پرینتر و حافظه و پردازنده و ...
میتونیم کارهایی که کرنل باید انجام بده را اینجوری لیست کنیم :
مدیرییت I/O ( ورودی خروجی ها )
مدیریت پردازنده
مدیریت وسیله ها
مدیریت فایلها
و مدیریت حافضه (اصلی و جانبی )
shell چیه :زبانی که کامپیوتر متوجه میشه زبان صفر و یک هست ولی استفاده از آن و خواندن و نوشتن آن برای ما سخته ( کی میتونه هر روز صبح به خیر را تبدیل به صفر و یک کنه ؟
)
بنا بر این در سیستم عاملمون یه برنامه ویژه به نام sell و جود داره شل فرمانهای شما را میگیره و اونها رو به زبان مادر زادی کامپیوتر ترجمه میکنه ( عجب مترجم خوبی
) شل یک مفسر فرمانه که فرمانها را از وسایل ورودی ( کیبرد ) میخونه و اجرا میکنه .
ولی ما کلی shell های جورواجور داریم که لینوکس ممکنه از چند تا از شل های معروف استفاده کنه .
تو این لینک مشخصات یک سری از شل ها امده : ( مسابقه
)
- کد: گزینش همه
http://en.wikipedia.org/wiki/Comparison_of_command_shells
توی داس و ویندوز این پوسته و یا shell ما COMMAND.COM نام داره که به مقصود مشابهی اسفاده میشه ولی به قدرتمندی شل لینوکس نیست .(اصلا و ابدا
)
سوال : و اما از shell چجور استفاده میکنند .( خوب اینام حرفیه ؟!)
جواب : با استفاده از commands (دستور )از شل استفاده میکنند .
دستورایی مثل
- کد: گزینش همه
ls
ls -a
who
cp
pwd
کسایی که با داس کار کردن این چیزا براشون آشنا تره اونجا هم برا خودش دستورایی داشت مثل
- کد: گزینش همه
dir
data
.........
در باره پردازش دستورات و برنامهها هم باید دانست :توی لینوکس وقتی یک برنامه اجرا میشه و در حال پردازشه , به آن پردازش یک عدد داده میشه PID (process-id) شما با دستور ps میتونید لیست پردازشهایی که الان دارن اجرا میشن را ببینید و با دستور kill پردازشی که به وجود آوردید را از کار بندازید . یعنی
IPD-شماره پردازش kill
- کد: گزینش همه
$ kill 102
و اما !
Redirection :
وقتی یک دستور را اجرا میکینید معمولاً ورودی های اون دستور لازم داره از طریق صفحهکلید بهش میدید و خروجیهاشم توی شل میبینید روی صفحه.
ولی همه چی اینجوری نمیمونه
. شما میتونید ورودی هاتونو از یه فایل متنی بگیرید و خروجیهاتون را در یک فایل متننی نمایش بدید .
برای این کار از یک سری علاعم استفاده میکنند .یعنی :
- کد: گزینش همه
>>
<
>
میپرسید این علاعم چجور استفاده میشه خوب اینهم یه مثال :
نام فایل < دستور
این رو در ترمینال بزنید :
- کد: گزینش همه
man ls > azmayeshi
حالا یه فایل متنی با نامی که دادید توی مسیری که هستید میبینید که داخلش خروجی دستورتون هست .
Pips :
و اما ممکنه بخواید خروجی یک دستور را ورودی دستور دیگه قرار بدید .
که اینجا از
| استفاده میکنند
دستور دوم | دستور اول
- کد: گزینش همه
ls | more
Filter :
و دیگه اینکه میتونیم ورودی و خروجیمونو کنترل کنیم
مثل اینکه شما بخواید یک فایل را چاپ کنید ولی نه همه ی صفحه هاشو بلکه صفحه های مورد نظر خودتونو . خروجی یک دستور هم میتونید کنترل کنید .
حالا میدونیم کجای کاریم