تا %60 تخفیف خرید برای 3 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش لینوکس : مدیریت سیستم : قسمت 5 : ایجاد اسکریپت

سلام و وقت بخیر. در این بخش به بررسی اصول نوشتن Shell Script در لینوکس میپردازیم. برای نوشتن یک برنامه تحت Shell به نکات زیر توجه کنید.

1- معمولا انتهای نام های برنامه های تحت Shell یک sh. میگذارند. این sh. به معنای پسوند فایل نیست. بر خلاف ویندوز که پسوند فایل ها در نام فابل مشخص میشود، در لینوکس پسوند فایل ها در متا دیتای فایل ذخیره میشود. این گذاشتن sh. فقط برای تفهیم کاربر است. مثلا برای برنامه های پایتون py. میگذاریم. گذاشتن و نذاشتن این اسامی تاثیری در اجرا و عملکرد برنامه ندارد. فقط برای اینکه خودمون متوجه بشیم محتویات و جنس فایل ها چیست به درد میخورد.

2- مشخص کردن مسیر برای تفسیر برنامه، باید به سیستم عامل بگوییم از چه کتابخانه هایی برای خواندن و اجرای برنامه استفاده کند.

3- فایل ها به طور پیش فرض executable نیستند، پس از نوتشن کد ها در یک فایل خالی، باید به فایل خاصیت exe بودن بدهیم.

4- اگر لازم بود که برنامه را بتوان در هر مسیری اجرا کرد و از همه جا قابل اجرا کردن باشد، مسیر پوشه برنامه باید به PATH کاربر افزوده شود. این قسمت اجباری نیست. اگر این کار را نکنیم، برای اجرای برنامه لازم است آدرس absolute بدهیم، همین. ولی اگر در PATH کاربر هم تعریف شده باشد، در هر مسیری با نوشتن نام برنامه، برنامه اجرا میشود.

موارد بالا برای نوشتن هر نوع برنامه ای به هر زبانی در لینوکس است. چه پایتون، چه C، چه پرل و ...

بریم سراغ اصل کار. به کد های زیر توجه کنید. برای کاربری که با نام آن وارد سیستم شدم، متغیر PATH را نگاه میکنم، قسمت آخر متغیر PATH را نگاه کنید. همان قسمتی بود که توسط bash-profile ایجاد شده بود. این مسیر بطور پیش فرض وجود ندارد. یعنی نمیتوانم به آن cd کنم ولی در PATH وجود دارد. یعنی هر بار که دستوری زده میشود، این مسیر هم توسط سیستم عامل چک میشود. میتوان این پوشه را با دستور mkdir درست کرد. راحت تر است که برای نوشتن برنامه ها از این مسیر استفاده کنیم و فایل های برنامه را اینجا ذخیره کنیم، چون بصورت پیش قرض در PATH وجود داردو هر جای دیگر هم میتوان برنامه ها را ذخیره کرد. میتوان هر مسیری را هم به PATH اضافه کرد. این کاملا به شما بستگی دارد. فقط همانطور که گفتم اگر مسیر برنامه در PATH باشد، در هر مسیری قایل اجراست ولی اگر مسیر برنامه در PATH نباشد، برای اجرای آن باید آدرس absolute (یعنی آدرس از ریشه) بدهیم.

[mohammad@CentOS6 ~]$ pwd
/home/mohammad
[mohammad@CentOS6 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/mohammad/bin
[mohammad@CentOS6 ~]$ cd bin
-bash: cd: bin: No such file or directory
[mohammad@CentOS6 ~]$ mkdir bin
[mohammad@CentOS6 ~]$ cd bin
[mohammad@CentOS6 bin]$ pwd
/home/mohammad/bin                 //برنامه ها را اینجا ذخیره میکنیم
[mohammad@CentOS6 bin]$ 

بسیار خوب ، بیاید یم مثال ساده رو اجرا کنیم. به کد زیر دقت کنید.

[mohammad@CentOS6 bin]$ vim hello.sh
[mohammad@CentOS6 bin]$ ls -l hello.sh 
-rw-rw-r--. 1 mohammad mohammad 44 Aug 18 13:45 hello.sh
[mohammad@CentOS6 bin]$ chmod +x hello.sh
[mohammad@CentOS6 bin]$ hello.sh 
We are ITPRO!!!
[mohammad@CentOS6 bin]$ ls -l hello.sh 
-rwxrwxr-x. 1 mohammad mohammad 44 Aug 18 13:45 hello.sh
[mohammad@CentOS6 bin]$ cd ~
[mohammad@CentOS6 ~]$ hello.sh 
We are ITPRO!!!
[mohammad@CentOS6 ~]$ 
[mohammad@CentOS6 ~]$ 
[mohammad@CentOS6 ~]$ bash -x bin/hello.sh
+ echo 'We are ITPRO!!!'
We are ITPRO!!!
+ exit 0
[mohammad@CentOS6 ~]$ 
[mohammad@CentOS6 ~]$ 

در همان مسیری که بودم با استفاده از vim یا gedit یک سند خالی درست کردم. درون آن کد ها زیر را وارد کردم.

#!/bin/bash

echo "We are ITPRO!!!"

exit 0

در خط اول به سیستم عامل میگوییم برای خواندن و اجرای برنامه از چه کتابخانه ای استفاده کند. مسیر نصب bash را وارد کردم. اگر داشتم پایتون مینوشتم مسیر نصب پایتون رو میدادم. خط بعد با دستور echo یک جمله را در خروجی چاپ کردم. در خط آخر هم گفتم 0 را برگردان. 0 به معنی اجرای صحیح برنامه است. سپس برنامه را ذخیره کرده و خارج میشم. اگر با دستور ls جزئیات فایل hello.sh را چاپ کنم، متوجه میشوم که خاصیت exe یعنی خاصیت اجرایی ندارد. با دستور chmod این فایل را exe میکنم تا از حالت فقط متنی خارج شود. حالا اگر نام برنامه را بزنم، برنامه اجرا میشود. حتی اگر مسیرم را با دستور cd عوض کنم باز هم برنامه اجرا میشود. برای debug کردن یک برنامه از دستور bash و سویچ x- استفاده کنید.

امیدوارم سخت نبوده باشه. بقیشو جلسه بعد میگم. فعلا همینارو تمرین کنید :)))

پایان قسمت اول از بخش دوم

نویسنده : سید محمد باقر موسوی

منبع : جزیره لینوکس و سیستم های متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

نظر شما
برای ارسال نظر باید وارد شوید.
2 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند