شل اسکریپت (Shell Script) روی VPS (بخش اول) – از صفر تا صد


در این نوشته روش نوشتن یک شِل اسکریپت روی VPS را که میتواند با مقاصد مختلفی مورد استفاده قرار گیرد، توضیح خواهیم داد. اسکریپتهای شل میتوانند برای اجرای دستورهای چندگانه، یک دستور منفرد با آرگومانهای دشوار یا گسترده و یا ایجاد یک رابط کاربرپسندتر برای انتشار پروژهها مورد استفاده قرار گیرند. به طور کلی شل اسکریپتها از طریق خودکارسازی کارها باعث سادهتر شدن امور میشوند، چون در صورتی که از آنها استفاده نکنید باید کارهای زیادی را به صورت دستی انجام دهید.
تنظیم یک پوشه
پیش از آن که آغاز به نوشتن یک شل اسکریپت بکنید، بهتر است یک پوشه مشخص به این کار اختصاص بدهید. توصیه شده است که برای اسکریپتهای شخصی این کار را در پوشه bin/~ انجام دهید.
بدین منظور دستور زیر را اجرا کنید.
mkdir ~/bin
و برای این که اسکریپتها را بتوانید از هر کجای سیستم اجرا کنید، باید با اجرای دستور زیر فایل etc/profile/ را باز کنید:
sudo nano /etc/profile
سپس خطوط زیر را به انتهای فایل اضافه کنید:
PATH=$PATH:$HOME/bin export PATH
به خاطر داشته باشید که Ctrl + O را برای ذخیرهسازی و CTRL + X را برای خروج بزنید. برای این که این تغییرات اعمال شوند، دستور زیر را اجرا کنید:
source /etc/profile
اگر توزیع لینوکسی که استفاده میکنید، از دستورهای منبع پشتیبانی نمیکند، میتوانید VPS را با دستور زیر مجدداً راهاندازی کنید:
sudo reboot
ایجاد یک فایل
برای آغاز یک شل اسکریپت، باید ابتدا یک فایل اجرایی بسازید. این کار از طریق اجرای دستور زیر، ممکن است:
touch ~/bin/firstscript chmod +x ~/bin/firstscript
ویرایشگر متن نانو را برای افزودن دستورات باز کنید:
nano ~/bin/firstscript
برای این که بارگذار (loader) برنامه این فایل اجرایی را به عنوان یک شل اسکریپت تشخیص دهد و دستورهای داخل آن را اجرا کند، باید آن را در دایرکتوری صحیحی قرار دهید و خط زیر را به ابتدای آن اضافه کنید:
#!/bin/sh
اینک آماده هستید که هر دستور لینوکسی را که دوست دارید، به صورت زیر به آن اضافه کنید:
clear echo “Hello World!”
پس از ذخیره کردن (CTRL + O) و خروج (CTRL + X) از نانو، میتوانید اسکریپت را با وارد کردن دستور زیر در هر کجا در سیستم اجرا کنید:
Firstscript
نتیجه اجرای دستور فوق چیزی شبیه زیر خواهد بود:
اسکریپت نمونه
یکی از امتیازهای عمده شل اسکریپتها این است که میانبرهایی برای وظایف تکراری ارائه میکنند. برای نمونه اگر فایلهای زیادی را به پوشه backup/~ انتقال میدهید، میتوانید اسکریپتی راهاندازی کنید که هر چیزی که در آن تعریف کردید را به پوشه مربوطه انتقال دهد.
ساختار چنین اسکریپتی به صورت زیر خواهد بود:
filebackup file-name1 file-name2...
سپس هر زمان که به آن نیاز داشتید، کافی است با وارد کردن عنوانش آن را اجرا کنید. پیش از این که چنین اسکریپتی را بنویسیم، باید نگاهی به چیزهایی که باید بیاموزیم داشته باشیم. ما میخواهیم شل اسکریپتی بنویسیم که هارد کد نشده باشد. این بدان معنی است که در این مثال اگر بخواهید پوشه پشتیبانگیری را تغییر دهید، بتوانید به راحتی با تغییر دادن چند خط ابتدایی کد اسکریپت، آن را بهروزرسانی کنید. شما ممکن است متغیر مربوط به آن را تنها یک بار ارجاع داده باشید؛ اما آشنایی با این روش صحیح برنامهنویسی مناسبتر است. برای تست کردن این وضعیت، لازم نیست بیدرنگ به سراغ ویرایشگر متنی بروید، بلکه میتوانید از همان خط فرمان این کار را انجام دهید:
testvariable=teststring
دستور echo متنی را در خروجی ارائه میدهد. با اجرای دستور زیر، میتوانید ببینید که چه مقداری برای آن تعیین شده است که در این مورد «teststring» است:
echo $testvariable
اینک میتوانید شروع به کدنویسی به طور معمول بکنید:
touch ~/bin/filebackup chmod +x ~/bin/filebackup nano ~/bin/filebackup
به خاطر داشته باشید که هر خطی که با # آغاز شود یک کامنت است. این خطوط به هیچ وجه تأثیری بر اجرای برنامه ندارند؛ مگر این که با یک علامت تعجب (!) پس از آن در خط اول برنامه بیاید که در این صورت تبدیل به shebang میشود. این شبانگ در خط اولیه کد زیر استفاده شده است:
#!/bin/sh #Backup script #Description: makes a copy of any given file at the backup folder #Author: Your Name #Date: 8/10/2013 #Backup folder; set this variable to any folder you have write permissions on BACKUPFOLDER=~/backup #The script will make sure the folder exists mkdir -p $BACKUPFOLDER #Now the script will copy the given file to the folder cp -a $@ $BACKUPFOLDER
اینک پس از این که فایل را ذخیره (CTRL + O) کردید و خارج شدید (CTRL + X) میتوانیم مروری بر کد داشته باشیم. چند خط اولیه جایی است که کامنتها را ارائه کردهایم. سپس با یک متغیر BACKUPFOLDER جایی که میخواهیم فایلهایمان پشتیبانگیری شوند را تعیین کردیم. در ادامه دستور «mkdir -p $BACKUPFOLDER» را اجرا میکنیم. کاری که این دستور انجام میدهد، این است که یک پوشه ایجاد میکند؛ اما اگر از قبل این پوشه وجود داشته باشد، خطایی ایجاد نمیکند.
در دستور بعدی یعنی «cp» هر آرگومانی که برای فراخوانی اسکریپت لازم است را با تعیین $@ تعیین کردهایم. درست پس از آن یک پوشه مقصد وجود دارد که در این مورد BACKUPFOLDER$ نام دارد. اینک میتوانید اسکریپت خود را با رفتن به هر پوشهای روی سیستم که چند فایل دارد و اجرای دستور زیر تست کنید:
filebackup file1 file2
شما میتوانید هر تعداد که فایل میخواهید به این دستور اضافه کنید تا به پوشه backup کپی شوند.
سخن پایانی
شل اسکریپتها هر جایی در سیستمهای لینوکسی حضور دارند و دلیل این مسئله آن است که بسیار مفید هستند و قابلیتهایی که ارائه میدهند بسیار زیاد است. در این راهنما مبانی شل اسکریپت را ارائه کردیم؛ اما موارد بسیار زیاد دیگری وجود دارند که باید آموخت. این موارد را در مقالات بعدی مجله فرادرس پیگیر باشید.
اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه کنید:
- مجموعه آموزشهای لینوکس
- راه اندازی SSH روی لینوکس — راهنمای جامع
- مجموعه آموزشهای برنامهنویسی
- اسکرپیتنویسی شل چیست و چرا مهم است؟
- ترفندها و نکات خط فرمان ویندوز
- ترمینال لینوکس و آنچه برای شروع به کار با آن باید بدانید
==