اجرای فایل sh در لینوکس، مک و ویندوز



در دنیای لینوکس و سیستم‌عامل‌های مبتنی بر یونیکس مانند مک، فایل‌هایی با پسوند .sh نقشی کلیدی در خودکارسازی وظایف و اجرای مجموعه‌ای از دستورات دارند. این فایل‌ها که به عنوان اسکریپت‌های شل (Shell Scripts) شناخته می‌شوند، به شما اجازه می‌دهند تا با یک بار نوشتن، مجموعه‌ای از دستورات پیچیده را بارها و بارها به سادگی اجرا کنید. این قابلیت، به ویژه برای مدیران سیستم و توسعه‌دهندگانی که به دنبال افزایش بهره‌وری و کاهش خطاهای انسانی هستند، یک مزیت بزرگ محسوب می‌شود.

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

 

فایل sh چیست؟

فایل .sh یک فایل متنی حاوی مجموعه‌ای از دستورات خط فرمان است که توسط شل (Shell) – مفسر خط فرمان سیستم‌عامل – به ترتیب اجرا می‌شوند. این اسکریپت‌ها برای اتوماسیون کارهای تکراری، مدیریت سیستم، نصب نرم‌افزار و اجرای برنامه‌های مختلف به کار می‌روند. به جای اینکه چندین دستور را به صورت دستی و تک به تک در ترمینال وارد کنید، می‌توانید همه آنها را در یک فایل .sh ذخیره کرده و با یک دستور ساده اجرا نمایید.

مزایای استفاده از فایل‌های sh:

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

 

پیش‌نیازها

برای شروع کار با فایل‌های .sh، تنها به دسترسی به خط فرمان یا ترمینال نیاز دارید. در سیستم‌عامل‌های لینوکس و مک این ابزار به صورت پیش‌فرض وجود دارد. اگر از یک سرور لینوکسی استفاده می‌کنید، می‌توانید از طریق SSH (آموزش اتصال به سرور مجازی لینوکس) به آن متصل شوید. بسیاری از ارائه‌دهندگان هاستینگ، از جمله برای سرویس‌های قدرتمندی مانند خرید vps، دسترسی کامل به ترمینال را فراهم می‌کنند که برای مدیریت و اجرای اسکریپت‌ها ضروری است.

 

چگونه یک فایل sh بسازیم؟

ایجاد یک فایل .sh بسیار ساده است. شما می‌توانید از هر ویرایشگر متنی در محیط خط فرمان (مانند nano یا vim) یا ویرایشگرهای گرافیکی استفاده کنید.

  1. باز کردن ترمینال: ابتدا ترمینال خود را باز کنید.
  2. ایجاد فایل با دستور touch: با استفاده از دستور touch می‌توانید یک فایل خالی ایجاد کنید:
    touch script.sh
  3. نوشتن دستورات در فایل: حالا با یک ویرایشگر متنی فایل را باز کرده و دستورات خود را بنویسید. برای مثال، از ویرایشگر nano استفاده می‌کنیم:
    nano script.sh

    در خط اول هر اسکریپت شل، بهتر است با استفاده از «shebang» (#!)، مفسر مورد نظر برای اجرای اسکریپت را مشخص کنید. برای اسکریپت‌های bash، خط اول به این صورت خواهد بود:

    #!/bin/bash

    سپس دستورات مورد نظر خود را در خطوط بعدی اضافه کنید. برای مثال، یک اسکریپت ساده که عبارت «سلام دنیا!» را چاپ می‌کند:

    #!/bin/bash
    echo «سلام دنیا!»
  4. ذخیره فایل: پس از نوشتن دستورات، فایل را ذخیره کرده و از ویرایشگر خارج شوید. در nano، این کار با فشردن Ctrl+X، سپس Y و در نهایت Enter انجام می‌شود.

 

اعطای مجوز اجرا به فایل sh

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

برای اعطای مجوز اجرا به صاحب فایل (user)، از دستور زیر استفاده کنید:

chmod +x script.sh

این روش بهترین و امن‌ترین گزینه است. اگر می‌خواهید همه کاربران بتوانند فایل را اجرا کنند، می‌توانید از دستور chmod 755 script.sh استفاده کنید، هرچند این کار معمولا توصیه نمی‌شود.

 

روش‌های اجرای فایل sh در لینوکس و مک

پس از ساخت و اعطای مجوز، چندین راه برای اجرای فایل .sh در محیط‌های مبتنی بر یونیکس وجود دارد.

 

۱. اجرای مستقیم از مسیر فعلی

اگر در همان پوشه‌ای هستید که فایل اسکریپت قرار دارد، می‌توانید با اضافه کردن ./ به ابتدای نام فایل، آن را اجرا کنید. این کار به شل می‌گوید که فایل را از دایرکتوری فعلی اجرا کند.

./script.sh

 

۲. اجرای فایل با استفاده از مفسر bash یا sh

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

bash script.sh

یا

sh script.sh

 

۳. اجرا با مشخص کردن مسیر کامل فایل

شما می‌توانید اسکریپت را از هر مسیری با ذکر آدرس کامل آن اجرا کنید.

/home/user/documents/script.sh

 

چگونه فایل sh را در ویندوز اجرا کنیم؟ (با WSL)

ویندوز به صورت رسمی قادر به اجرای فایل‌های .sh نیست. اما بهترین و یکپارچه‌ترین راه برای این کار، استفاده از Windows Subsystem for Linux (WSL) است. WSL به شما اجازه می‌دهد یک محیط کامل لینوکس را مستقیما روی ویندوز خود داشته باشید.

  1. نصب WSL: ابتدا PowerShell را با دسترسی ادمین (Run as Administrator) باز کرده و دستور زیر را برای نصب WSL و توزیع پیش‌فرض اوبونتو وارد کنید:
    wsl --install

    پس از اجرای دستور، سیستم خود را ری‌استارت کنید.

  2. اجرای ترمینال لینوکس: پس از راه‌اندازی، منوی استارت را باز کرده و «Ubuntu» را جستجو و اجرا کنید.
  3. دسترسی به فایل‌ها: درایوهای ویندوز شما در مسیر /mnt/ در دسترس هستند. برای مثال، برای رفتن به درایو C باید از دستور زیر استفاده کنید:
    cd /mnt/c/Users/YourUser/Documents
  4. اجرای اسکریپت: حالا که در مسیر فایل خود هستید، درست مانند لینوکس ابتدا با دستور chmod +x script.sh مجوز اجرایی به آن بدهید و سپس با دستور ./script.sh آن را اجرا کنید.

 

اجرای فایل‌های install.sh در اوبونتو و مک

بسیاری از نرم‌افزارها برای نصب آسان، یک فایل install.sh ارائه می‌دهند. مراحل نصب در اوبونتو و مکینتاش تقریبا یکسان است:

  1. ابتدا ترمینال را باز کنید.
  2. با دستور cd به پوشه‌ای بروید که فایل install.sh در آن قرار دارد.
  3. با استفاده از دستور chmod +x install.sh مجوز اجرایی به فایل بدهید.
  4. در نهایت، فایل را با دستور sudo ./install.sh اجرا کنید. استفاده از sudo به این دلیل است که نصب نرم‌افزارها معمولا به دسترسی ریشه (root) نیاز دارد.

 

نکات پیشرفته و کاربردی

  • اجرای اسکریپت در پس‌زمینه: اگر اسکریپتی دارید که اجرای آن زمان‌بر است، می‌توانید با افزودن علامت & به انتهای دستور، آن را در پس‌زمینه اجرا کنید تا ترمینال شما آزاد بماند.
    ./script.sh &
  • قرار دادن اسکریپت در مسیر PATH: برای اینکه بتوانید اسکریپت خود را مانند یک دستور سیستمی از هر جای ترمینال فقط با نام آن اجرا کنید، می‌توانید فایل اسکریپت را به یکی از دایرکتوری‌های موجود در متغیر PATH سیستم، مانند /usr/local/bin منتقل کنید.
  • استفاده در سرورهای مجازی: اگر از سرورهای مجازی استفاده می‌کنید، تسلط بر شل اسکریپتینگ برای مدیریت سرور بسیار حیاتی است. به عنوان مثال، با داشتن یک vps آلمان می‌توانید وظایف مدیریتی مانند پشتیبان‌گیری، به‌روزرسانی‌ها و نظارت بر منابع را به طور کامل خودکار کنید.