Loading…

درباره قالب‌بندی اسکریپت شل آنلاین

اسکریپت شل خود را جایگذاری کنید، "قالب‌بندی" را فشار دهید و خروجی تمیز و یکنواخت مبتنی بر `shfmt` دریافت کنید. ایده‌آل برای خطوط لوله DevOps، dotfiles، نقطه‌ورود کانتینرها و اسکریپت‌های استقرار آماده تولید. بدون نصب، بدون ورود – فقط کد شل قابل خواندن آماده commit.

چرا از این قالب‌بندی اسکریپت شل استفاده کنیم

  • قالب‌بندی فوری برای POSIX sh، Bash، mksh و شل‌های مرتبط
  • قوانین سبک shfmt برای تورفتگی، فاصله‌گذاری و بلوک‌های case/esac
  • طراحی شده برای پشتیبانی از گزینه‌هایی مانند اندازه تورفتگی، تب در مقابل فاصله و فاصله‌گذاری تغییر مسیر
  • کد خام را جایگذاری کنید یا فایل‌های `.sh`، `.bash`، `.ksh`، `.mksh` یا `.bats` را آپلود کنید
  • همراه ایده‌آل برای خطوط لوله CI/CD، entrypointهای داکر و dotfileها
  • قالب‌بندی شده از طریق بک‌اند امن با منطق سبک shfmt - بدون نیاز به نصب محلی
  • کپی یک‌کلیک یا دانلود اسکریپت تمیز شده

🛠️ چگونه اسکریپت‌های شل خود را آنلاین قالب‌بندی کنید for shell-script-formatter

1

1. اسکریپت خود را جایگذاری یا آپلود کنید

📥 کد شل خود را در ویرایشگر جایگذاری کنید، یا یک فایل `.sh`، `.bash`، `.ksh`، `.mksh` یا `.bats` را کشیده و رها کنید. هایلایت سینتکس مشاهده ساختار و دستورات را آسان می‌کند.

2

2. (اختیاری) تنظیمات پیشرفته را تنظیم کنید

⚙️ اگر پروژه شما از قوانین سبک سفارشی استفاده می‌کند، هنگام در دسترس بودن در رابط کاربری، تورفتگی یا سایر گزینه‌های پیشرفته را تنظیم کنید. در غیر این صورت، پروفایل پیش‌فرض از قبل با روش‌های متداول shfmt مطابقت دارد.

3

3. اسکریپت خود را قالب‌بندی کنید

✨ روی **قالب‌بندی** کلیک کنید تا اسکریپت شما به API قالب‌بندی امن ارسال شود. این کار تورفتگی، فاصله‌گذاری و برخی ساختارها را بازنویسی می‌کند در حالی که رفتار را حفظ می‌کند.

4

4. نتیجه را کپی یا دانلود کنید

📤 اسکریپت قالب‌بندی شده را به ویرایشگر خود بازگردانید، یا آن را به عنوان فایل `.sh` برای git، CI یا استقرار تولید دانلود کنید.

مشخصات فنی

فرمت‌ها و پسوندهای پشتیبانی شده

از گویش‌های متداول شل سبک Bourne که در سیستم‌های دنیای واقعی با آن‌ها مواجه می‌شوید پشتیبانی می‌کند:

فرمت / گویشپسوند معمولتوضیحات
POSIX sh.shاسکریپت‌های شل قابل حمل سازگار با /bin/sh
Bash.sh, .bashاسکریپت‌ها و کمک‌کننده‌های تعاملی گنو بش
پوسته کورن (ksh).kshاسکریپت‌های پوسته کورن در محیط‌های قدیمی
mksh.mkshاسکریپت‌های پوسته کورن MirBSD
تست‌های Bats.batsمجموعه تست‌های مبتنی بر پوسته با استفاده از Bats

رفتار قالب‌بندی (سبک shfmt)

قالب‌بند بک‌اند از قواعد سبک shfmt برای چیدمان یکنواخت پوسته پیروی می‌کند.

جنبهرفتارمزیت
تورفتگیتورفتگی را در `if`، `for`، `while`، `case`، توابع و زیرپوسته‌ها نرمال می‌کندتجزیه بصری جریان کنترل و تودرتویی آسان‌تر می‌شود.
فاصله‌گذاریدر انتساب‌ها اطراف `=` و در اپراتورهای دودویی در جای مناسب فاصله اضافه می‌کندکاهش اغتشاش بصری و خطاهای تجزیه تصادفی.
تغییرمسیرهااز فاصله‌گذاری اطراف `>`، `>>`، `<` مطابق با قراردادهای سبک shfmt پشتیبانی می‌کندخوانایی تغییرمسیرهای فایل بهبود می‌یابد.
بلوک‌های case`case`، شاخه‌های الگو و `esac` را به طور یکنواخت تراز می‌کنداز دستورات case تو در تو یا فشرده جلوگیری می‌کند.
خروجی idempotentاجرای مجدد قالب‌بند نتیجه یکسانی می‌دهدامکان ادغام ایمن در هوک‌های pre-commit و CI را فراهم می‌کند.

محدودیت‌ها و اندازه ورودی

طراحی شده تا حتی روی اسکریپت‌های غیرساده نیز سریع و قابل پیش‌بینی باشد.

پارامترمحدودیت / رفتاریادداشت‌ها
حداکثر اندازه ورودی (متن)≈ ۲ مگابایتاسکریپت‌های بزرگ‌تر از این بهتر است به صورت محلی با shfmt قالب‌بندی شوند.
حداکثر اندازه فایل (آپلود)≈ ۵ مگابایتایده‌آل برای اکثر اسکریپت‌های استقرار و مجموعه‌های ابزار.
رمزگذاریUTF-8 توصیه می‌شودرمزگذاری‌های قدیمی مانند ISO-8859-1 را قبل از قالب‌بندی تبدیل کنید.

مدل اجرا

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

جنبهرفتاریادداشت‌ها
انتقالتماس HTTPS به نقطه پایانی `/api/shell-script-formatter`از استراق سمع هنگام قالب‌بندی اسکریپت شما جلوگیری می‌کند.
زمان‌بندیحدود ۲۵ ثانیه برای هر درخواستاز اجرای بی‌پایان کارها روی ورودی‌های بسیار بزرگ یا مشکل‌ساز جلوگیری می‌کند.
معناشناسیفقط فاصله‌گذاری و چیدمانمنطق اسکریپت شما حفظ می‌شود؛ فقط قالب‌بندی تغییر می‌کند.

معادل CLI با shfmt

می‌خواهید همین رفتار را در ترمینال یا خط لوله CI خود داشته باشید؟ مستقیماً از `shfmt` استفاده کنید:

لینوکس / 🍎 مک‌اواس / 🪟 ویندوز (از طریق WSL یا Go)

نصب shfmt با استفاده از Go

go install mvdan.cc/sh/v3/cmd/shfmt@latest

فایل باینری `shfmt` را در دایرکتوری bin مربوط به Go شما نصب می‌کند (مثلاً `~/go/bin`).

قالب‌بندی یک فایل شل با تورفتگی ۲ فاصله

shfmt -i 2 -w script.sh

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

قالب‌بندی و چاپ در stdout

shfmt -i 4 script.sh

از تورفتگی ۴ فاصله استفاده کرده و بدون تغییر فایل، در stdout چاپ می‌کند.

بررسی قالب‌بندی در CI (بدون تغییرات)

shfmt -d scripts/

تفاوت‌های فایل‌هایی که نیاز به قالب‌بندی مجدد دارند را نشان می‌دهد؛ در صورت نیاز به تغییرات، با کد غیر صفر خاتمه می‌یابد.

یک مرحله `shfmt -d` در خط لوله CI یا هوک پیش از کامیت اضافه کنید تا هر اسکریپت به طور خودکار تمیز و یکنواخت بماند.

موارد استفاده عملی برای قالب‌بندی شل

DevOps و خطوط لوله CI/CD

اسکریپت‌های حیاتی را قابل خواندن، قابل بازبینی و ایمن برای تولید نگه دارید.

  • پاک‌سازی اسکریپت‌های استقرار و بازگشت قبل از ادغام در `main`.
  • یکسان‌سازی هوک‌ها در `.git/hooks`، `scripts/` و کمک‌کننده‌های CI.
  • قالب‌بندی نقطه ورود داکر و اسکریپت‌های راه‌اندازی کانتینر.
shfmt -i 2 -w ./scripts/deploy.sh
shfmt -i 2 -w ./scripts/*.sh

همکاری تیمی و متن‌باز

از بحث‌های مربوط به سبک اجتناب کرده و در بازبینی‌ها روی منطق تمرکز کنید.

  • اعمال یک سبک واحد در تمام اسکریپت‌های شل مشارکت‌کنندگان.
  • تسهیل فرآیند پیوستن با مرتب نگه داشتن فایل‌های نقطه‌ای و کمک‌کننده‌ها.
  • کاهش تفاوت‌های پرسر و صدا با استانداردسازی تورفتگی و فاصله‌گذاری.
shfmt -w hooks/*.sh
shfmt -i 2 -ci -bn -w .

یادگیری و آموزش اسکریپت‌نویسی شل

نمایش بهترین روش‌ها به دانشجویان و توسعه‌دهندگان تازه‌کار.

  • پاکسازی مثال‌ها قبل از قرار دادن در اسلایدها یا مستندات.
  • قالب‌بندی خودکار ارسال‌های دانشجویی برای تمرکز بازخورد بر معناشناسی.
  • نشان دادن چگونگی تأثیر چیدمان بر خوانایی و تشخیص خطا.

❓ Frequently Asked Questions

🔍shfmt چیست؟

`shfmt` یک فرمت‌کننده خط فرمان متن‌باز برای اسکریپت‌های شل است که توسط mvdan ایجاد شده است. این ابزار کد شل شما را تجزیه و با تورفتگی، فاصله‌گذاری و ساختار یکنواخت برای sh استاندارد، Bash و گویش‌های مشابه بازنویسی می‌کند.

⚙️آیا می‌توانم تعداد فاصله‌های تورفتگی را انتخاب کنم؟

بله. در استفاده از خط فرمان می‌توانید تورفتگی را با پرچم `-i` کنترل کنید (مثلاً `-i 2` یا `-i 4`). این ابزار آنلاین برای پشتیبانی از ترجیحات تورفتگی معادل از طریق بک‌اند قالب‌بندی خود طراحی شده است.

🚫آیا این ابزار وب فایل من را بازنویسی می‌کند؟

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

💬آیا سینتکس خاص Bash را درک می‌کند؟

بله. موتور shfmt زیرین از ساختارهای رایج Bash و همچنین sh استاندارد، به علاوه پوسته‌های اضافی مانند mksh و ksh پشتیبانی می‌کند.

🔒آیا قالب‌بندی اسکریپت‌های حساس در اینجا ایمن است؟

برای اسکریپت‌های عمومی، این ابزار راحت و ایمن است. برای اسکریپت‌های حاوی داده‌های بسیار حساس (رمزهای تعبیه شده، جزئیات زیرساخت داخلی و غیره)، معمولاً اجرای محلی shfmt یا در محیط CI خودتان ایمن‌تر است.

Pro Tips

Best Practice

قبل از هر commit، shfmt را اجرا کنید تا تاریخچه git شما بر تغییرات واقعی متمرکز شود، نه فاصله‌های سفید.

Best Practice

`shfmt -d` را با CI ترکیب کنید تا از ادغام زمانی که اسکریپت‌ها به درستی قالب‌بندی نشده‌اند جلوگیری کنید.

Best Practice

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

Best Practice

شبنگ‌های خود (`#!/usr/bin/env bash`) را در تمام اسکریپت‌ها یکسان نگه دارید تا از مشکلات ظریف انتقال‌پذیری جلوگیری کنید.

Additional Resources

Other Tools