لماذا تستخدم منسق نصوص Shell هذا
- تنسيق فوري لـ POSIX sh وBash وmksh والأصداف ذات الصلة
- قواعد نمط shfmt للمسافات البادئة والفراغات وكتل case/esac
- مصمم لدعم خيارات مثل حجم المسافة البادئة، علامات الجدولة مقابل المسافات ومسافات إعادة التوجيه
- الصق الكود الخام أو ارفع ملفات `.sh` أو `.bash` أو `.ksh` أو `.mksh` أو `.bats`
- رفيق مثالي لأنابيب CI/CD ونقاط دخول Docker وملفات dotfiles
- تنسيق عبر خلفية آمنة تعمل بمنطق shfmt – لا حاجة لتثبيت محلي
- نسخ أو تحميل السكريبت المنظف بنقرة واحدة
🛠️ كيفية تنسيق سكريبتات Shell الخاصة بك عبر الإنترنت for shell-script-formatter
1. الصق أو ارفع السكريبت الخاص بك
📥 الصق كود shell في المحرر، أو اسحب وأسقط ملف `.sh` أو `.bash` أو `.ksh` أو `.mksh` أو `.bats`. تسليط الضوء على الصياغة يسهل رصد البنية والأوامر.
2. (اختياري) عدّل الإعدادات المتقدمة
⚙️ إذا كان مشروعك يستخدم قواعد نمط مخصصة، اضبط المسافات البادئة أو الخيارات المتقدمة الأخرى عند توفرها في الواجهة. وإلا، فإن الملف الشخصي الافتراضي يطابق ممارسات shfmt الشائعة بالفعل.
3. نسّق السكريبت الخاص بك
✨ انقر **تنسيق** لإرسال السكريبت إلى واجهة برمجة التطبيقات الآمنة للتنسيق. تعيد كتابة المسافات البادئة والتباعد وبعض التركيبات مع الحفاظ على السلوك.
4. انسخ أو حمّل النتيجة
📤 انسخ السكريبت المنسق مرة أخرى إلى محررك، أو حمّله كملف `.sh` جاهز لـ git أو CI أو النشر الإنتاجي.
المواصفات الفنية
التنسيقات والامتدادات المدعومة
يدعم لهجات shell الشائعة من نوع Bourne التي تواجهها في الأنظمة الواقعية:
| التنسيق / اللهجة | الامتداد النموذجي | الوصف |
|---|---|---|
| POSIX sh | .sh | سكريبتات shell محمولة متوافقة مع /bin/sh |
| Bash | .sh, .bash | سكريبتات GNU Bash ومساعدات تفاعلية |
| Korn shell (ksh) | .ksh | سكريبتات Korn shell في البيئات القديمة |
| mksh | .mksh | نصوص Korn shell من MirBSD |
| اختبارات Bats | .bats | مجموعات اختبار قائمة على Shell باستخدام Bats |
سلوك التنسيق (نمط shfmt)
يتبع المُنسِّق الخلفي قواعد نمط shfmt لتخطيط shell متسق.
| الجانب | السلوك | الفائدة |
|---|---|---|
| المسافة البادئة | يوحد المسافة البادئة في `if`، `for`، `while`، `case`، الدوال والأصداف الفرعية | يسهل التحليل البصري لتدفق التحكم والتضمين. |
| المسافات | يضيف مسافات حول `=` في التعيينات وحول العوامل الثنائية حيثما كان ذلك مناسبًا | يقلل من التشويش البصري وأخطاء التحليل العرضية. |
| إعادة التوجيه | يدعم المسافات حول `>`، `>>`، `<` وفقًا لاتفاقيات نمط shfmt | يحسن قابلية قراءة إعادة توجيه الملفات. |
| كتل case | يُحاذي `case`، فروع الأنماط و`esac` بشكل متسق | يمنع عبارات case المضغوطة أو المتداخلة بعمق. |
| مخرجات ثابتة | تشغيل المُنسِّق مرة أخرى يعطي نفس النتيجة | يسمح بالدمج الآمن في خطافات pre-commit و CI. |
حدود الإدخال والحجم
مصمم ليكون سريعًا ومتوقعًا حتى على النصوص البرمجية غير البسيطة.
| المعامل | الحد / السلوك | ملاحظات |
|---|---|---|
| الحد الأقصى لحجم الإدخال (نص) | ≈ 2 ميجابايت | النصوص البرمجية الأكبر من هذا يُفضل تنسيقها محليًا باستخدام shfmt. |
| الحد الأقصى لحجم الملف (تحميل) | ≈ 5 ميجابايت | مثالي لمعظم نصوص النشر ومجموعات الأدوات. |
| الترميز | يُوصى بـ UTF-8 | قم بتحويل الترميزات القديمة مثل ISO-8859-1 قبل التنسيق. |
نموذج التنفيذ
يعمل المُنسِّق عبر خلفية مؤمنة باستخدام منطق نمط shfmt.
| الجانب | السلوك | ملاحظات |
|---|---|---|
| النقل | استدعاء HTTPS لنقطة النهاية `/api/shell-script-formatter` | يمنع التنصت أثناء تنسيق البرنامج النصي الخاص بك. |
| المهلة | ~25 ثانية لكل طلب | يتجنب المهام المنفلتة على المدخلات الكبيرة جدًا أو المرضية. |
| الدلالات | المسافات البيضاء والتخطيط فقط | يتم الحفاظ على منطق البرنامج النصي الخاص بك؛ يتم تغيير التنسيق فقط. |
مكافئ سطر الأوامر مع shfmt
هل تريد نفس السلوك في طرفيتك أو خط أنابيب CI؟ استخدم `shfmt` مباشرة:
لينكس / 🍎 macOS / 🪟 ويندوز (عبر WSL أو Go)
تثبيت shfmt باستخدام Go
go install mvdan.cc/sh/v3/cmd/shfmt@latestيثبت ثنائي `shfmt` في دليل bin الخاص بـ Go (مثل `~/go/bin`).
تنسيق ملف shell بمسافة بادئة مزدوجة
shfmt -i 2 -w script.shيكتب فوق `script.sh` بإخراج متسق التنسيق.
التنسيق والطباعة إلى stdout
shfmt -i 4 script.shيستخدم مسافة بادئة رباعية ويطبع إلى stdout دون تعديل الملف.
التحقق من التنسيق في CI (بدون تغييرات)
shfmt -d scripts/يعرض فرقًا للملفات التي سيتم إعادة تنسيقها؛ يخرج بقيمة غير صفرية إذا كانت هناك حاجة إلى تغييرات.
حالات الاستخدام العملية لتنسيق Shell
DevOps وخطوط أنابيب CI/CD
احتفظ بالبرامج النصية الحرجة قابلة للقراءة والمراجعة وآمنة للإنتاج.
- تنظيف برامج النشر والتراجع قبل الدمج في `main`.
- توحيد الخطافات في `.git/hooks` و `scripts/` ومساعدي CI.
- تنسيق نقاط دخول Docker وبرامج تشغيل الحاوية.
shfmt -i 2 -w ./scripts/deploy.shshfmt -i 2 -w ./scripts/*.shالتعاون الجماعي والمصادر المفتوحة
تجنب النقاشات حول النمط وركز على المنطق في المراجعات.
- تطبيق نمط واحد عبر جميع نصوص shell للمساهمين.
- تسهيل الانضمام من خلال الحفاظ على ملفات النقاط والمساعدات مرتبة.
- تقليل الاختلافات المزعجة من خلال توحيد المسافات البادئة والتباعد.
shfmt -w hooks/*.shshfmt -i 2 -ci -bn -w .تعليم وتعلم برمجة Shell
عرض أفضل الممارسات للطلاب والمطورين المبتدئين.
- تنظيف الأمثلة قبل وضعها في الشرائح أو الوثائق.
- تنسيق طلبات الطلاب تلقائياً للتركيز على الملاحظات الدلالية.
- إظهار كيف يؤثر التنسيق على سهولة القراءة واكتشاف الأخطاء.
❓ Frequently Asked Questions
🔍ما هو shfmt؟
⚙️هل يمكنني اختيار عدد المسافات للتباعد؟
🚫هل تقوم هذه الأداة عبر الإنترنت بالكتابة فوق ملفي؟
💬هل تفهم صيغة Bash المحددة؟
🔒هل من الآمن تنسيق النصوص الحساسة هنا؟
Pro Tips
شغّل shfmt قبل كل commit حتى يركز سجل git على التغييرات الحقيقية، وليس المسافات البيضاء.
اجمع `shfmt -d` مع CI لحظر عمليات الدمج عندما لا تكون النصوص منسقة بشكل صحيح.
زوّد هذا المُنسِّق مع ShellCheck لالتقاط مشاكل النمط والمنطق في نصوص shell الخاصة بك.
حافظ على تنسيق shebangs (`#!/usr/bin/env bash`) متسقًا عبر جميع النصوص البرمجية لتجنب مشاكل التوافق الدقيقة.
Additional Resources
Other Tools
- محسن CSS
- محسن HTML
- محسن Javascript
- محسن PHP
- منتقي الألوان
- مستخرج Sprite
- فك تشفير Base64
- تشفير Base64
- منسق Csharp
- منسق CSV
- Dockerfile Formatter
- منسق Elm
- منسق ENV
- منسق Go
- منسق Graphql
- منسق Hcl
- منسق INI
- منسق JSON
- منسق Latex
- منسق Markdown
- منسق Objectivec
- Php Formatter
- منسق Proto
- منسق Python
- منسق Ruby
- منسق Rust
- منسق Scala
- منسق SQL
- منسق SVG
- منسق Swift
- منسق TOML
- Typescript Formatter
- منسق XML
- منسق YAML
- منسق Yarn
- مختصر CSS
- Html Minifier
- Javascript Minifier
- مختصر JSON
- مصغر XML
- عارض رؤوس HTTP
- PDF إلى نص
- مختبر Regex
- مدقق ترتيب SERP
- بحث Whois