شيل سكربت (shell script ) هي برنامج كمبيوتر تم تصميمه للعمل بواسطة يونكس شيل ( Unix shell) (وهو مترجم سطر الأوامر command-line interpreter ) هناك عدة انواع من لغات الشيل سكربت وهي تعتبر من لغات السكربت ( لغات تستخدم لتنفيذ مجموعة من الاوامر مكتوبة في ملف نصي وليس ملف تنفيذي ) ويتم عملها عن طريق واجهة سطر الأوامر لـ نظام التشغيل وتعتبر كانها قشرة خارجية للتعامل مع البرامج .
العمليات التي يتم انجازها بواسطة الشيل سكربت تشمل تنفيذ برنامج أو معالجة أو طباعة نص، هناك نوع من السكربت يسمى المغلف Wrapper وهي تقوم بتهيئة بيئة عمل أو تشغيل برنامج أو تنظيف للكمبيوتر ومهام سابقة أو تسجيل دخول أو غيرها .
وفي الغالببة تكون بسيطة ويمكن أن نقول عنها انها لغة برمجة مصممة لتكون مفيدة لمجموعة محددة من المهام. والعمليات النموذجية التي تؤديها مخطوطات قذيفة تشمل معالجة الملف، وتنفيذ برنامج وطباعة النص.والعديد من المترجمين الفوريين شيل مزدوجة كما هي في واجهة سطر الأوامر, مثل مقدمة شل، ويندوز باورشيل أو إم إس-دوس الأمر.كوم. وآخرون مثل سيناريو بل أو الرسومية ويندوز سيناريو المضيف (WScript.exe), إضافة إلى القدرة على البرمجة بيئات الحوسبة دون الحاجة إلى واجهة سطر الأوامر وهناك أمثلة أخرى من لغة برمجة تهدف في المقام الأول للبرمجة شل تشمل DIGITAL Command Language و Job Control Language
قدرات
اختصارات
في شكلها الأكثر أساسية، يمكن أن توفر شيل تباينات مريحة من حيث أمر النظام إعدادات البيئة الخاصة، الأمر خيارات، أو تحليل نتائج تطبيق تلقائيا، ولكن في الطريقة التي يسمح البرنامج النصي جديدة لقانون لا يزال كأمر طبيعي تماما يونكس. ومن الأمثلة على ذلك لإنشآء نسخة من إل إس الأمر إلى قائمة الملفات، ويعطيها اسما أقصر قيادة لتر، وهو ما سوف يتم حفظها عادة في الدليل بن المستخدم كما / الوطن / اسم المستخدم / بن / لتر، ومجموعة افتراضية من خيارات الأمر قبل الموفر.
#!/bin/sh LC_COLLATE=C ls -FCas "$@"
هنا Shebang (Unix) ما يشير إلى مترجم ينبغي استخدامه لتنفيذ بقية البرنامج النصي والخط الثاني يجعل قائمة مع خيارات لمؤشرات تنسيق الملف، والأعمدة، وجميع الملفات (لا يوجد حذف)، وحجم في كتل.ويتم تعيين = LC_COLLATE جيم ترتيب الافتراضي لعدم اضعاف حالة العلوية والسفلية معا، و"$ @" أسباب لتمريرها، حتى يتسنى لجميع من الخيارات الطبيعية وبناء أخرى معروفة لا تزال قادرة على استخدامه. وسوف يكون المستخدم قادرا على استخدامه ببساطة بالنسبة للقائمة القصيرة الأكثر شيوعا.
الوظائف التي على شكل دفعات
شل مخطوطات تسمح بتنفيذ العديد من الأوامر التي من شأنها أن تدخل يدويا في واجهة سطر الأوامر تلقائيا، وبدون الحاجة إلى الانتظار للمستخدم التشغيل في كل مرحلة من مراحل التسلسل. وعلى سبيل المثال، نشاهد في الدليل مع الملفات الثلاثة جيم شفرة المصدر، وبدلا من تشغيله يدويا للأوامراللازمة لبناء أربعة برامج نهائية منها، يمكن للمستخدم أن ينشئ بدلا من ذلك C shell النصية وهي هنا تساعد على البناء والاحتفاظ بها في الدليل، والتي تقوم بتجميعها تلقائيا :
#!/bin/csh echo compiling... cc -c foo.c cc -c bar.c cc -c qux.c cc -o myprog foo.o bar.o qux.o echo done.
السيناريو هنا سوف يتيح للمستخدم حفظ الملف الذي يتم تحريره، وقفة المحرر، ثم تشغيل فقط. بناء لإنشاء برنامج تحديث واختبار، ومن ثم العودة إلى المحرر. منذ 1980s أو نحو ذلك، ومع ذلك، فقد تم استبدال النصوص من هذا النوع مع المرافق العامة مثل صنع المتخصصة في صنع البرامج.
تعميم
وظائف دفعة بسيطة ليست غير عادية لمهام معزولة، ولكن باستخدام حلقات شل، والاختبارات، والمتغيرات التي توفر مرونة أكبر للمستخدمين. شيل بورن ثانية لتحويل الصور إلى صور الحياة السياسية في فرنسا بابوا غينيا الجديدة، حيث يتم تقديم أسماء الصورة على سطر الأوامر—ربما عن طريق البدل—بدلا من سرد كل ما يجري داخل السيناريو، ويمكن أن تنشئ مع هذا الملف، وعادة ما حفظ في ملف مثل الصفحة الرئيسية/اسم المستخدم/بآين/ jpg2png
#!/bin/bash for jpg in "$@" ; do # use $jpg in place of each filename given, in turn png="${jpg%.jpg}.png" # find the PNG version of the filename by replacing.jpg with.png echo converting "$jpg"... # output status info to the user running the script if convert "$jpg" jpg.to.png ; then # use the convert program (common in Linux) to create the PNG in a temp file mv jpg.to.png "$png" # if it worked, rename the temporary PNG image to the correct name else #...otherwise complain and exit from the script echo 'error: failed output saved in "jpg.to.png".' 1>&2 exit 1 fi # the end of the "if" test construct done # the end of the "for" loop echo all conversions successful # tell the user the good news
ويمكن بعد ذلك الأمر jpg2png يتم تشغيلها على الدليل الكامل فقط.
شئ محتمل
ومن السمات الرئيسية للمخطوطات قذيفة هو أن يتم التعامل مع كمترجما لنظام التشغيل الميزة الأساسية. وبدلا من شل للمستخدم فقط أن تكون قادرة على تنفيذ البرامج النصية في اللغة، أو برنامج نصي فقط في وجود مترجم التوجيه التعامل بشكل صحيح تم تشغيله من شل (كلاهما القيود في التعامل مع شل بورن في وقت مبكر من الكتابات)، يتم تعيين البرامج النصية قذيفة وأعدموا من قبل نظام التشغيل نفسه. شيل الحديثة ليس فقط على قدم المساواة مع أوامر النظام، ولكن هي في الواقع كثيرة بدلا مخطوطات قذيفة (أو أكثر عموما، ومخطوطات، حيث أنها لا تفسر بعض منهم بقذيفة، ولكن بدلا من ذلك بيرل بايثون أو بعض اللغات الأخرى. ويمتد هذا إلى رموز الإنهاء وعودة النظام الأخر مثل المرافق للإشارة إلى النجاح أو الفشل، مما يسمح لهم كما دعا عناصر من أكبر البرامج بغض النظر عن كيفية تنفيذ هذه الأدوات بشكل أكبر.
مثل أوامر النظام الموحد، ومخطوطات قذيفة حذف كلاسيكي أي نوع من ملحقإت اسم الملف ما لم يقصد به أن يكون قراءة في شل يعمل من خلال آلية خاصة لهذا الغرض ("."، أو مصدر في الدعم).
البرمجة
وهناك العديد من الميزات أيضا وإن العروض المختلفة الحديثة وعادة ما توجد فقط في أكثر تطورا لغة برمجة متعددة الاستخدامات مثل التحكم في تدفق يبني، والمتغيرات، والتعليقات، صفائف روتين مع هذه الأنواع من الميزات المتوفرة، فمن الممكن لكتابة تطبيقات متطورة بدرجة معقولة، ومخطوطات قذيفة. ومع ذلك، لا تزال محدودة من جانب حقيقة أن معظم لغات شل يحظون بدعم كبير أو كتابة بيانات النظم والطبقات، والترابط، والرياضيات المعقدة، وغيرها من الميزات المشتركة لغة كاملة، وهنا أيضا عموما أبطأ بكثير من التعليمات البرمجية المترجمة أو تفسير لغات مكتوبة مع سرعة الأداء كهدف.
لغات البرمجة الأخرى
ولقد تم إدخال العديد من لغات البرمجة القوية للمهام التي هي كبيرة جدا أو معقدة ليتم التعامل معها بشكل مريح مع البرامج النصية القذيفة العادية، ولكن مزايا نصية مرغوبة والحمل تطوير شاملة، لغة البرمجة المترجمة سيكون غير ملائم. تفاصيل من لغات البرمجة النصية لغة برمجة عالية المستوى مصدر متكرر للمناقشة. ولكن بصفة عامة لغة برمجة واحدة هو الذي يتطلب وجود مترجم.
دورة الحياة
ونصوص شل غالبا ما تكون بمثابة المرحلة الأولى في مجال تطوير البرمجيات، وغالبا ما تكون عرضة للتحويل في وقت لاحق إلى التنفيذ المختلفة الكامنة، والأكثر استخدامآ والتي يتم تحويلها إلى بيرل بايثون، أو سي (لغة برمجة) مترجم التوجيه وتسمح التفاصيل لتنفيذ مهام مخفية تماما داخل السيناريو، وبدلا من التعرض لاسم ملف التمديد، وينص على reimplementation السلسة في لغات مختلفة مع أي تأثير على المستخدمين النهائيين.
مزايا وعيوب
وفي كثير من الأحيان، وكتابة السيناريو قذيفة أسرع بكثير من كتابة رمز يعادل في لغات البرمجة الأخرى. وهناك العديد من المزايا تشمل برنامج سهل أو اختيار الملف، بداية سريعة، والتصحيح التفاعلي. ويمكن استخدام برنامج شيل لتوفير الربط والتسلسل وصنع القرار حول البرامج القائمة، وللمخطوطات متوسطة الحجم لعدم وجود خطوة التجميع وهي مميزة. يجعل من السهولة كتابة رمز التصحيح في السيناريو وإعادة تشغيله لكشف وإصلاح الخلل. ويمكن لغير الخبراء المستخدمين استخدام البرمجة النصية لتكييف سلوك البرامج، وبرمجة شل توفرمجالا محدودا لبعض متعدد. ومن ناحية أخرى، برمجة شل معرضة لأخطاء مكلفة. مثل أخطاء كتابة مثل آر إم الترددات اللاسلكية - * / (بدلا من * الترددات اللاسلكية المقصودة /) والفولكلور في المجتمع يونكس؛ مسافة واحدة اضافية يحول الأمر من واحد أن يحذف كل ما في الدلائل الفرعية واحد الذي حذف كل شيء—وأيضا يحاول حذف كل شيء على Root partition. ويمكن تحويل مشاكل مماثلة cp (يونكس) و mv وإساءة استخدام> توجيه يمكن حذف محتويات الملف. وتتألف هذه أكثر تعقيدا من حقيقة أن العديد من أوامر يونيكس تختلف في اسم واحد فقط حرف : cp, cn, سيدي (أمر) ولكن هناك عيب آخر وهو بطء سرعة التنفيذ وضرورة إطلاق عملية جديدة لقيادة قذيفة تقريبا لكي يتم تنفيذها. يمكن إنجاز العمل النصي من خلال إقامة أنابيب التجزئة التي تتسم بكفاءة تصفية (البرامج) أوامر تنفذ أكثر من عمل، والتخفيف من التباطؤ، ولكن السيناريو المعقد عادة ما يتكون من عدة أوامر من حجم أبطأ من البرامج التقليدية المترجمة التي تنفذ أكثر من مهمة أو ما يعادلها. وقد تتواجد هناك عدة مشآكل أيضآ وتسمى مشاكل التوافق بين لاري وول وبيرل وهي كتب شهيرة "انه من الأسهل إلى ميناء قذيفة من شيل".
وبالمثل، يمكن تشغيل البرامج النصية والتي تعد الأكثر تعقيدا في القيود المفروضة على شل لغة البرمجة نفسها؛ مما تجعل من الصعب كتابة رمز الجودة وملحقات بقذائف مختلفة لتخفيف المشاكل مع لغة قذيفة الأصلي ويمكن أن تجعل المشاكل سوءا.[1]
وهناك العديد من العيوب تستخدم بعض اللغات النصية والتي غالبآ ما تكون عيوبها في التصميم ضمن بناء الجملة أو اللغة أو التنفيذ، وليس مفروضة أو بالضرورة عن طريق استخدام سطر الأوامرالتي تستند إلى نص، وهناك عدد من القذائف والتي تستخدم لغات أخرى لبرمجة شل كامل أو حتى عضوية مثل Scsh (والذي يستخدم مخطط (لغة البرمجة)).
مقالات ذات صلة
المراجع
- "Csh Programming Considered Harmful" - تصفح: نسخة محفوظة 15 أبريل 2017 على موقع واي باك مشين.
وصلات خارجية
- An Introduction To Shell Programming by Greg Goebel
- UNIX / Linux shell scripting tutorial by Steve Parker
- Shell Scripting Primer (Apple)
- What to watch out for when writing portable shell scripts by Peter Seebach
- Free Unix Shell scripting books