گنو/لینوکس

راهنمای مبتدی شل اسکریپت (بخش ۲)

نوشته شده توسط اروند طباطبایی

در قسمت قبل مفاهیمی ساده از شل و اسکریپت نویسی را بیان کردیمکه برای شروع برنامه نویسی برای شل بسیار مهم است. حال در این بخش به ادامه آموزش خواهیم پرداخت.

permission های اسکریپت ها و اسم‌ها

اسکریپت ها همانند برنامه‌ها شناخته میشوند. برای اینکه این اتفاق به درستی انجام شود شما باید پرمیشن های درستی را به فایل اسکریپت نسبت دهید. شما میتوانید اسکریپت ها را با دستور زیر قابل اجرا نمایید.

chmod +x ~/somecrazyfolder/script1

 

این کار به هر شخصی اجازه میدهد تا اسکریپت شما را به تنهایی اجرا کند. اگر میخواهید فقط شما قادر به اجرا اسکریپت باشید و یوزرهای دیگر دسترسی برای اجرا نداشته باشند باید از دستور زیر استفاده کنید.

chmod u+x ~/somecrazyfolder/script1

 

و در آخر برای اجرای این اسکریپت نیاز دارید تا ابتدا به محل ذخیره آن رفته و سپس آن را با دستور مخصوص اجرا کنید. همانند زیر:

cd ~/somecrazyfolder

./script1

 

برای اینکه اسکریپت شما احساس راحتی و امنیت بیشتری کند میتوانید آن را در پوشه bin در هوم دایرکتوری خود ذخیره کنید.

~/bin

 

در بیشتر توزیع‌های مدرن این پوشه به صورت خودکار ساخته نمیشود و شما میتوانید آن را خودتان بسازید. این پوشه همان پوشه ای است که معمولاً فایل‌های اجرایی در آن ذخیره می‌شوند و هر کاربر برای خود یک bin شخصی دارد که دیگر کاربران به آن دسترسی ندارند. با قرار دادن اسکریپت ها در این قسمت شما میتوانید به آسانی و با وارد کردن اسم اسکریپت ها آن‌ها را اجرا کنید. مانند استفاده از دیگر دستورات با این تفاوت که آرگومنت خاصی را نیاز ندارید تا استفاده کنید که از رفتن به محل اسکریپت و زدن ./ قبل از نام اسکریپت بی‌نیاز خواهید شد. قبل از اینکه یک اسکریپت را نام گذاری کنید با دستور زیر چک کنید که آیا این دستور را قبلاً برنامه دیگری استفاده کرده است یا خیر

which [command]

 

بیشتر افراد (از جمله خودم) نام اولین اسکریپت خود را test میگذارند و هنگامی که آن‌ها تلاش میکنند تا آن را در خط فرمان اجرا کنند هیچ اتفاقی نمیوفتد. این بدین دلیل است که دستور test با این اسکریپت تداخل دارد که بدون آرگومنت های خاص خود هیچ کاری را انجام نمیدهد.همیشه مطمئن باشید که اسم اسکریپت های شما تداخلی با برنامه‌ها و دستورات سیستم شما ندارد. همچنین همیشه سعی کنید نامی که برای اسکریپت خود میگذارید ساده و رساننده کاری که اسکریپت انجام میدهد باشد.

دستور العمل های اسکریپت نویسی

guidelines اسکریپت

همانطور که اشاره کردیم هر اسکریپت یک فایل متنی ساده است. این بدان معنی نیست که شما نمیتوانید هر آنچه را که میخواهید بنویسید ولی هنگامی که یک اسکریپت به حالت اجرایی تبدیل می‌شود هر خط و کلمه آن توسط شل خوانده شده و پس از ارزیابی برای اسکریپت بودن اجرا میشود. بنابراین لازم است که ازقواعد و دستورالعمل هایی پیروی کنید تا اسکریپت شما به راحتی اجرا شود. چند مورد مهم را در زیر باهم مرور خواهیم کرد :

۱ – هر اسکریپت باید با متن زیر شروع شود تا شاخه بش به سیستم معرفی شود.

#!/bin/bash

 

۲ – هر خط جدید یک دستور جدید است.

۳ – خط هایی که میخواهید کامنت شوند با # شروع کنید.

۴ – دستورات در بین () قرار خواهند گرفت.

Hash bang

وقتی یک شل میخواهد فایل اسکریپت را بخواند مستقیم ترین راه برای معرفی آن به شل این است که در اولین خد از کد خود از دستور زیر استفاده نمایید

#!/bin/bash

اگر شما در سیستم خود از شل دیگری استفاده میکنید میتوانید محل احرای آن را جایگزین کنید. خط‌های کامنت با # شروع می‌شوند اما اضافه کردن ! . پس از آن مکان شل یک نوع هک کردن محسوب می‌شود که قانون کامنت گذاشتن را دور میزند و اسکریپت را مجبور به اجرا در همان شل میکند که به آن آدرس داده شده است.

خط جدید ؛ دستور جدید

هر خط جدید باید دستور جدیدی را در خود جای داده باشد و یا از چیزهایی مثل if/then/else استفاده کنید که در اینصورت به بیش از یک خط برای دستورات نیاز دارید و میتوانید هر قسمت از یک دستور را در خط جدید قرار دهید تا کد شما مرتب تر شود. با این حال هیچ‌گاه اجازه ندهید تا دستورات طولانی به خط بعدی راه پیدا کند چرا که باعث گیج شدن شل شده و امکان ارور دادن بسیار بالا میرود. اگر ویرایشگر شما اینکار را به صورت خودکار انجام میدهد شما باید گزینه text-wrapping را به صورت دستی غیرفعال کنید. در nano میتوانید با استفاده از کلید های ترکیبی alt+l اینکار را انجام دهید.

کامنت گذاری با # ها

اگر شما یک خط را با علامت # شروع کنید این خط در شل خوانده نشده و از آن صرفنظر میشود. از خط‌های کامنت میتوانید برای توضیح دادن خطوط و یادآوری عملیات های آن‌ها استفاده کنید. باز هم باید قابلیت text wrapping را غیرفعال کنید و یا کامنت های خود را در چند خط که هر خط با # شروع می‌شود قرار دهید. استفاده از کامنت های زیاد میتوانید به شما و دیگر افرادی که علاقه به توسعه اسکریپت شما دارند کمک کند تا کدهای شمارا راحت‌تر درک کرده و توسعه دهند. تنها چیزی که باید حواستان به آن باشد استفاده از ! با # است که در مورد آن صحبت کردیم و قانون کامنت هارا نقض خواهد کرد.

دستورات در بین پرانتز ها

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

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

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه