Shell Scripting چیست و چرا باید از آن استفاده کرد؟
1396/09/20 17:38 , شایان مسلمی

Shell Scripting چیست و چرا باید از آن استفاده کرد؟

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

به منظور قبول و اجرای دستورات، شل میتواند دستوراتی که در یک فایل ذخیره شده باشد را نیز اجرا کند.این حالت اجرا به عنوان شِل اسکریپتینگ شناخته میشود.در این مقاله ما درباره ی اصول شل اسکریپتینگ صحبت میکنیم.

1)تاریخچه ی شِل

در دهه ی 70 میلادی و با آغاز Unix، یک برنامه ی شل به نام V6 Shell وجود داشت که توسط Ken Thomson توسعه داده شده بود.این یک شل فعل و انفعالی بود و قابلیت اسکیرپتینگ را نداشت.

این شل توسط Bourne Shell در سال 1977 دنبال شد و تاکنون به عنوان شل پیشفرض برای اکانت روت مورد استفاده قرار میگیرد.این شل قابلیت اسکرپتینگ را اضافه کرد که قابلیتی کاملاً کاربردی از آن سال تابحال بوده است.

توسعه ی بیشتر شل در دهه ی 1980، به متغیرهای شل پیشرفت های بیشتری اعطا کرد.محبوب ترین آن ها C-Shell و  Korn Shellبودند.هرکدام از این شل ها، ترکیب مختص به خودش را داشت که در موارد خاصی، به شدت با شل اصلی تفاوت داشت.

یکی از محبوب ترین شل های امروزی Bash Shell است.Bash به معنی Bourne-Again-Shell میباشد و متغیری است که به طور وسیعی نسبت به بورن شل اصلی،پیشرفت داشته است.

2)اجرای یک شل اسکریپت

شما چگونه بک شل اسکریپت را اجرا میکنید؟ساده است.نمونه ی پایین را ببینید:

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

echo "hello world"

این دستور را مطابق پایین اجرا کنید:

$ bash hello.sh

# prints

hello world

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

#!/bin/bash

با این تغییر،شل اسکریپت ساده ی ما اینگونه میشود:

#!/bin/bash

echo "hello world"

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

$ chmod +x hello.sh

در اینجا،میتوانید فایل اسکریپت را مستقیماً بدون بازگشت مستقیم شل اجرا کنید.

$ hello.sh

# prints

hello world

3)خودکارسازی عملیات ها

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

  • یک فایل یا فولدر را هرروز روی یک محل ذخیره ی ابری آپلود کنید،مثل
  • لوگ فایل ها را که هرروز در حال رشد هستند، فشرده سازی کنید.
  • نرخ های بورس را جمع آوری کنید، آن ها را باز کنید و در شرایط مناسب پیام یا ایمیل بفرستید.

4)ترکیب چندین دستور

برای اتوماتیک کردن کارهای مکرر، میتوانید چندین سطر از دستورات را به یک دستور ادغام کنید.یادآوری یک دستور تکی ساده تر از چندین دستور است.

یک مثال خوب میتواند بوت سیستم عامل لینوکس باشد.در بخشی از بوت، سیستم عامل تعدادی از دستورات را اجرا میکند.این دستورات در واقع شل اسکریپت هایی هستند که در دایرکتوری /etc موجودند.اگر به یکی از این شل اسکریپت ها نگاه کنید،پیچیدگی بوت شدن یک سیستم را خواهید فهمید،که در صورت غیاب شل اسکریپت ها،باید آن ها را به صورت دستی وارد کنید.

مثال پایین یک نمونه ی ساده از شل اسکریپت /etc/profile است.این شل اسکریپت، هر زمان که یک کاربر وارد بشود قابل اجرا است.تصور کنید که یکی از دستورات زیر را به صورت دستی وارد کنید!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))

# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

 

if [ "$PS1" ]; then

  if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then

    # The file bash.bashrc already sets the default PS1.

    # PS1='\h:\w\$ '

    if [ -f /etc/bash.bashrc ]; then

    . /etc/bash.bashrc

    fi

    else

    if [ "`id -u`" -eq 0 ]; then

    PS1='# '

    else

    PS1='$ '

    fi

  fi

fi

 

# The default umask is now handled by pam_umask.

# See pam_umask(8) and /etc/login.defs.

 

if [ -d /etc/profile.d ]; then

  for i in /etc/profile.d/*.sh; do

    if [ -r $i ]; then

    . $i

    fi

  done

  unset i

fi

5)توسعه ی ساده تر

میتوان همان فعالیت های شل اسکریپت در یک برنامه ی معمولی که در زبان C/C++ نوشته شده باشد را اجرا کرد.اگرچه، نوشتن و عیب یابی یک شل اسکریپت از یک برنامه ی C/C++ ساده تر است.مخصوصاً برای فعالیت های سیستمی که شامل اجرای دستورات خارجی ،ساختن و حذف فایل ها و دایرکتوری ها، هدایت خروجی ها و غیره میشوند.

برنامه های C/C++ برای اداره کردن سطح پایینتری دارند،مانند درخواست های سیستمی،اعمال تغییرات در ساختارهای داده ای و غیره.

6)شفافیت

یک شل اسکریپت،با مزیت متنی بودن، میتواند به آسانی برای کنترل عملکرد مورد بررسی قرار بگیرد.در مقابل،تنها راهی که میتوانید بفهمید یک برنامه در زبان هایی مثل C/C++ نوشته شده، این است که به سورس کد ها دسترسی داشته باشید.برای مثال، میتوانید بررسی کنید که آیا یک شل اسکریپت فایلی را حذف میکند، و اگر شما به آن فایل ها احتیاج داشته باشید، میتوانید یک کپی آن ها را در یک کحل دیگر قرار بدهید.

همینطور عیب یابی مشکلات شل اسکریپت ساده تر نیز هست،چون شما میتوانید سورس کدها را ببینید.آیا یک اسکریپت به دلیل اینکه دایرکتوری وجود ندارد پاسخ نمیدهد؟ میتوانید به اسکریپت کد نگاه کنید و دایرکتوری بسازید.

7)قابل حمل بودن

یک شل اسکریپت میتواند به سیستم های عامل یونیکس یا شبیه آن منتقل بشود و اجرا بشود(اگر خود شل حاضر باشد).حتی با انتقال یک شل اسکریپت از معماری های مختلف مثل x86,MIPS,Spare و غیره، شل اسکریپت ها نسبت به برنامه های C/C++ قابل حمل تر هستند.

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

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

 

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات