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

آموزش لینوکس( Linux Essentials ) جلسه 11 : اسکریپت نویسی 1

هادی صارمی
هادی صارمی
0 پسند
82 بازدید
0 نظر
1 ماه قبل

مقدمه :

ما تاکنون یاد گرفته ایم که دستورات را در Shell اجرا کنیم ، اما می توانیم دستورات را نیز در فایل ذخیره کنیم و سپس آن فایل را به حالت اجرائی در بیاوریم و اجرا کنیم. وقتی فایل اجرا می شود ، دستورات یکی پس از دیگری اجرا می شوند. این فایل های اجرایی را اسکریپت می گویند و برای هر مدیر لینوکس یک ابزاری کاملاً مهم هستند. اساساً ، ما می توانیم Bash را به عنوان یک زبان برنامه نویسی و همچنین Shell در نظر بگیریم.

آموزش لینوکس( Linux Essentials ) جلسه 11 : اسکریپت نویسی 1

برای ایجات یک فایل اسکریپت ابتدا دستور مورد نظر را وارد یک فایل نموده سپس فایل را در حالت اجرا قرار خواهیم داد.

برای درک بهتر ابتدا با echo یک خروجی را چاپ خواهیم کرد:

$ echo "Hello World!"
Hello World!

در ادامه ما قصد داریم محتوای دستور بالا را درون یک فایل به نام new_script وارد نماییم و پس از ان با دستور cat محتوای فایل را نمایش دهیم.

$ echo 'echo "Hello World!"' > new_script
$ cat new_script
echo "Hello World!"

همانطور که مشاهده میکنید محتوای فایل new_script دستور قبلی می باشد.

ساخت اسکریپت قابل اجرا :

پس از نوشتن دستور درون یک فایل نوبت به اجرای فایل می رسد که اولین فکر کاربر این می باشد که به راحتی بتوانیم با زدن نام فایل اسکریپت دستور درون فایل اجرا شود به مثال زیر توجه فرمائید :

 

بیایید برخی از مراحل مورد نیاز برای اجرای این فایل را همانطور که انتظار داریم اجرا کنیم. اولین فکر کاربر ممکن است این باشد که به راحتی نام اسکریپت را تایپ کند ، روشی که ممکن است در نام هر دستور دیگری تایپ کند:

$ new_script
/bin/bash: new_script: command not found

ما میدانیم که فایل new_script در مکان فعلی ما وجود دارد ، اما توجه داشته باشید که پیام خطا به ما نمی گوید فایل موجود نیست ، بلکه به ما می گوید که این دستور وجود ندارد. بنابراین در ادامه سعی خواهیم کرد نام فایل را به دستورات قابل اجرا اضافه نمائیم و فایل را به حال اجرائی در آوریم.

دستورات و متغیر PATH :

برای مثال ، وقتی دستور ls را در shell تایپ می کنیم ، در حال اجرای فایلی به نام ls وجود دارد و اجرا می شود . به دستور زیر توجه کنید محل قرار اجرای دستور ls را به شما نمایش می دهد :

$ which ls
/bin/ls

فرض کنید جهت نمایش محتوای مسیر جاری بجای زدن دستور ls باید مسیر فایل را مشخص میکردید چی اتفاقی رخ می داد؟با توجه به مسیر دستورات متوجه خواهید شد که این امر برای شما خسته کننده خواهد بود بنابراین Bash دارای یک متغییر محیطی است که شامل تمام دایرکتوری هایی است که می توانیم دستوراتی را که می خواهیم اجرا کنیم پیدا کنیم. با استفاده از echo می توانید محتوای این متغیر را مشاهده کنید.

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

 

هر کدام از این مسیر های نمایش داده شده جایی است که bash انتظار دارد دستوری پیدا کند که با دو نقطه (:) پایان هر مسیر را نشان می دهد و مسیر جدیدی را جهت اجرا دستور می گردد . همانطور که گفتیم مسیر فایل new_script در این مسیر ها نمی باشد و همچنین هنوز فایل به حالت اجرائی در نیامده است بنابراین پس از وارد کردن دستور new_script پیغام خطا نبود دستور را به ما نمایش می دهد.

برای حل این مسئله سه راه حل وجود دارد:

  1. ما می توانیم new_script را به یکی از فهرست های PATH منتقل کنیم.
  2. می توانیم دایرکتوری فعلی خود را به PATH اضافه کنیم.
  3. می توانیم نحوه تماس اسکریپت را تغییر دهیم.

راه حل دوم ساده ترین راه حل است ، به سادگی ما را ملزم می کند هنگام فراخوانی اسکریپت با استفاده از (/.) مکان فعلی را مشخص کنیم.

$ ./new_script
/bin/bash: ./new_script: Permission denied

همانطور که مشاهده میکنید پیغام خطا تغییر پیدا کرده است و پیغام عدم دسترسی را به ما می دهد که جلوتر این مشکل را حل خواهیم کرد.

اجرائی کردن فایل :

اولین قدمی که در مواجه با این پیغام انجام خواهیم داد استفاده از دستور ls -l برای مشاهده جزئیات فایل است:

$ ls -l new_script
-rw-rw-r-- 1 user user 20 Apr 30 12:12 new_script

می توانیم ببینیم که مجوزهای این فایل به طور پیش فرض روی --rw -rw- r- تنظیم شده است. در جلسات آینده در خصوص مجوز ها بیشتر توضیح خواهیم داد اما همانطور که مشاهده میکنید مجوز اجرائی بودن در فایل مشاهده نمی شود که با علامت x مشخص می شود.

با زدن دستور زیر قابلیت اجرائی بودن به فایل می دهیم :

$ chmod +x new_script
$ ls -l new_script
-rwxrwxr-x 1 user user 20 Apr 30 12:12 new_script

پس از زدن دستور فوق فایل به توسط همه کاربران قابل اجرا می باشد. (البته این امر در سطوح بالا ضعف امنیتی محصوب می شود اما در حال حاضر فقط جهت آشنایت به شما گفته می شود)

پس از اجرائی کردن فایل دستور قبلی را مجدد وارد خواهیم کرد :

$ ./new_script
Hello World!

همانطور که مشاهده میکنید این بار خروجی دستور درون فایل موجود را به ما نمایش می دهد.

در جلسه آینده با اسکریپت های بیشتری آشنا خواهید شد.

نظر شما
برای ارسال نظر باید وارد شوید.
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...