شل اسکریپت (Shell Script) روی VPS (بخش اول)
شل اسکریپت (Shell Script) روی VPS (بخش اول) در این نوشته روش نوشتن یک شِل اسکریپت روی VPS را که میتواند با مقاصد مختلفی مورد استفاده قرار گیرد، توضیح خواهیم داد. اسکریپتهای شل میتوانند برای اجرای دستورهای چندگانه، یک دستور منفرد با آرگومانهای دشوار یا گسترده و یا ایجاد یک رابط کاربرپسندتر برای انتشار پروژهها مورد استفاده قرار گیرند. به طور کلی شل اسکریپتها از طریق خودکارسازی کارها باعث سادهتر شدن امور میشوند، چون در صورتی که از آنها استفاده نکنید باید کارهای زیادی را به صورت دستی انجام دهید.
شل اسکریپت (Shell Script) روی 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) برنامه این فایل اجرایی را به عنوان یک شل اسکریپت تشخیص دهد و دستورهای داخل آن را اجرا کند، باید آن را در دایرکتوری صحیحی قرار دهید و خط زیر را به ابتدای آن اضافه کنید:
اینک آماده هستید که هر دستور لینوکسی را که دوست دارید، به صورت زیر به آن اضافه کنید:
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 میشود. این شبانگ در خط اولیه کد زیر استفاده شده است:
cp -a $@ $BACKUPFOLDER
اینک پس از این که فایل را ذخیره (CTRL + O) کردید و خارج شدید (CTRL + X) میتوانیم مروری بر کد داشته باشیم. چند خط اولیه جایی است که کامنتها را ارائه کردهایم. سپس با یک متغیر BACKUPFOLDER جایی که میخواهیم فایلهایمان پشتیبانگیری شوند را تعیین کردیم. در ادامه دستور «mkdir -p $BACKUPFOLDER» را اجرا میکنیم. کاری که این دستور انجام میدهد، این است که یک پوشه ایجاد میکند؛ اما اگر از قبل این پوشه وجود داشته باشد، خطایی ایجاد نمیکند.
در دستور بعدی یعنی «cp» هر آرگومانی که برای فراخوانی اسکریپت لازم است را با تعیین $@ تعیین کردهایم. درست پس از آن یک پوشه مقصد وجود دارد که در این مورد BACKUPFOLDER$ نام دارد. اینک میتوانید اسکریپت خود را با رفتن به هر پوشهای روی سیستم که چند فایل دارد و اجرای دستور زیر تست کنید:
filebackup file1 file2
شما میتوانید هر تعداد که فایل میخواهید به این دستور اضافه کنید تا به پوشه backup کپی شوند.
اسکریپت های جالب در اسکریپت من