Shell و Bash و Scripts: كل شيء عن برمجة Shell.

في هذه الفرصة الجديدة (الإدخال رقم 8) في "تعلم البرمجة النصية لـ Shell" سوف نركز على النظرية أكثر من الممارسة. وهذا يعني أننا لن نقوم بتثبيت أو دراسة رمز أو تثبيت برنامج معين (حزمة) ، ولكن بدلاً من ذلك سوف نتعمق في ما هو عالم برمجة شل التحدث بشكل صحيح ، من خلال الإجابات على الأسئلة الصغيرة ولكن المباشرة ، الموضحة أدناه ، لتوضيح الكثير مما تم تدريسه ، والذي لا يشير مباشرة إلى الكود الداخلي المبرمج:

برمجة شل

ما هي شل في نظام تشغيل جنو / لينكس؟

شل والتي تعني في الإسبانية CONCHA (قذيفة ، غطاء ، حماية). يشير هذا المصطلح المطبق في أنظمة التشغيل إلى مترجم الأوامر لنظام التشغيل. بشكل عام ، إنها واجهة نصية عالية الأداء ، تتجلى في شكل Terminal (Console) والتي تخدم بشكل أساسي 3 مجالات عمل مهمة:

1.- إدارة نظام التشغيل ،
2.- تشغيل التطبيقات والتفاعل معها ، و
3.- العمل كبيئة برمجة أساسية.

العديد من SO ، جنو / لينكس لا تزال تتم إدارتها بكفاءة أكبر عن طريق تحرير ملفات التكوين الخاصة بهم ، عبر Terminal. كقاعدة عامة ، توجد هذه في مسار الوجهة: «/إلخ"، وضمن دلائل محددة لكل تطبيق. على سبيل المثال ، البرنامج ليلو (والتي تعني Linux Loader) يتم تكوينها عن طريق تحرير الملف النصي الموجود ويسمى باسم "/Etc/lilo/lilo.conf". في حالة البرامج (التطبيقات) ، يتم تشغيلها (يتم تنفيذها / تنشيطها) عن طريق كتابة اسم الملف القابل للتنفيذ ، إذا كان موجودًا في المسار (المسار الافتراضي) لجميع الملفات التنفيذية ، كما هو الحال عادةً "/ Usr / bin" ، أو بكتابة اسم الملف القابل للتنفيذ مسبوقًا بـ: ./، من الدليل الذي يوجدون فيه.

كل هذا معروف جيدًا لأي مستخدم شل. ومع ذلك ، فإن قدراتها كبيئة برمجة ليست معروفة جيدًا ولا تحظى بالتقدير. لا تحتاج النصوص (البرامج) المصنوعة في Shell إلى تجميعها. تفسرها شركة شل سطراً بسطر. لذلك ، تُعرف هذه البرامج أو تُسمى بنصوص Shells ، ويمكن أن تتراوح من أوامر بسيطة إلى سلسلة معقدة من التعليمات لبدء نظام التشغيل نفسه. بشكل عام ، لديك بناء جملة نظيف (واضح) إلى حد ما (بناء ، ترتيب)، مما يجعلها نقطة انطلاق جيدة للبدء في عالم البرمجة.

ما هي البرمجة النصية شل؟

إنها تقنية (المهارة / البراعة) لتصميم وإنشاء البرنامج النصي (ملف أتمتة المهام) باستخدام Shell (ويفضل) لنظام التشغيل ، أو محرر النصوص (الرسم أو المحطة الطرفية). هذا نوع من لغة البرمجة يتم تفسيره بشكل عام. هذا يعني أنه بينما يتم تجميع (تشفير) معظم البرامج ، نظرًا لأنه يتم تحويلها بشكل دائم إلى رمز معين (خاص) قبل أن يتم تنفيذها (عملية تجميع) ، يظل نص شل في شكله الأصلي (الكود الخاص به مصدر النص) ويتم تفسيرها أمرًا بأمر في كل مرة يتم تنفيذها فيها. على الرغم من أنه من الممكن أن يتم تجميع البرامج النصية أيضًا ، على الرغم من أنه ليس من المعتاد.

ما هي خصائص البرامج المعتمدة على البرمجة تحت Shell Scripting؟

1.- إنها أسهل في الكتابة (البرنامج) ، ولكن بتكلفة معالجة أعلى عند تنفيذها.

2.- يستخدمون المترجمين الفوريين بدلاً من المترجمين للتشغيل

3.- لديهم علاقة اتصال مع المكونات المكتوبة بلغات البرمجة الأخرى.

4.- يتم تخزين الملفات التي تحتوي عليها كنص عادي.

5.- التصميم النهائي (الكود) عادة ما يكون أصغر مما سيكون مكافئًا في لغة البرمجة المترجمة.

ما هي أكثر أنواع اللغات شيوعًا ضمن البرمجة النصية الصدفية؟

1.- لغة التحكم في المهام والصدفة:

أ) cmd.exe (Windows NT ، Windows CE ، OS / 2) ،
ب) COMMAND.COM (DOS ، Windows 9x) ،
ج) csh ، Bash ، AppleScript ، sh ،
د) JScript عبر Windows Script Host ،
هـ) VBScript عبر Windows Script Host ،
و) REXX ، من بين أشياء أخرى كثيرة.

2.- برمجة واجهة المستخدم الرسومية (لغات الماكرو):

أ) AutoHotkey ،
ب) أوتويت ،
ج) توقع ،
د) Automator ، من بين أمور أخرى.

3.- لغة البرمجة لتطبيقات محددة:

أ) ActionScript في Flash ،
ب) ماتلاب ،
ج) نص mIRC ،
د) QuakeC ، من بين أمور أخرى.

4.- برمجة الويب (للصفحات الديناميكية):

أ) من جانب الخادم:

- بي أتش بي،
- ASP (صفحات الخادم النشطة) ،
- صفحات JavaServer ،
- كولد فيوجن ،
- IPTSCRAE ،
- لاسو ،
- سيناريو MIVA ،
- SMX ،
- XSLT ، من بين أمور أخرى.

ب) من جانب العميل:

- جافا سكريبت ،
- JScript ،
- VBScript ،
- Tcl ، من بين أمور أخرى.

5.- لغات معالجة الكلمات:

- أوك ،
- بيرل ،
- عطش ،
- XSLT ،
- باش من بين آخرين.

6.- لغات ديناميكية للأغراض العامة:

- APL ،
- بوو ،
- ديلان ،
- الفريت ،
- رائع ،
- IO ،
- لثغة ،
- لوا ،
- MUMPS (M) ،
- NewLISP ،
- نوفا ،
- بيرل ،
- بي أتش بي،
- بايثون ،
- روبي ،
- مخطط ،
- حديث قصير،
- سوبر كارد ،
- Tcl ،
- الثورة من بين أمور أخرى.

ما هو Bash في GNU / Linux؟

إنه برنامج كمبيوتر وظيفته تفسير الطلبات. لأنه يقوم على قذيفة يونكس ويدعم POSIX. تمت كتابته لمشروع جنو وهو الصدفة الافتراضية لمعظم توزيعات لينكس.

ما هو نص شل في جنو / لينكس؟

مخطوطات شل إنها مفيدة للغاية. إنها لفكرة جيدة أن نكتب تلك الاحتياجات التي لدينا ثم نعدل النصوص التي تؤدي هذا العمل من أجلنا. حان الوقت الآن لتسأل نفسك ما هو النص بالضبط. إنه ملف نصي ، يحتوي على سلسلة من أوامر shell ، التي ينفذها النظام بطريقة منظمة ، من أعلى إلى أسفل. لتحريرها ، ما عليك سوى محرر نصوص ، مثل Emacs و Vi و Nano ، من بين العديد من المحرر الموجود. يتم حفظها بالامتداد ".sh" (أو بدونه ، في بعض الحالات) ويتم تشغيلها من Shell باستخدام الأمر: sh script name.sh. تعمل البرامج النصية بنفس طريقة عمل أوامر shell.

نهج التدريس الذي أستخدمه شخصيًا "تعلم البرمجة النصية لـ Shell" إنه عملي ومباشر للغاية ، أي فحص سيناريو يعمل بكامل طاقته ، وتحليله ، ودراسته جملة تلو جملة ، وسطرًا بسطر ، وأمرًا بأمر ، ومتغيرًا متغيرًا ، حتى تفهم كيف يعمل كل عنصر على حدة وكيف يشارك في الكود جنرال لواء. انها نوع من الهندسة العكسية أو إعادة هندسة البرمجيات. كل هذا بهدف تخصيص المعرفة وتحسينها (تحسينها) ومشاركتها ، من أجل المنفعة الجماعية وإدارة أفضل وتحسين لأنظمة التشغيل المجانية.

كيف يعمل ويعمل في شل جنو / لينكس؟

الخطوة الأولى في العمل مع شل هي تشغيل قذيفة. ما يبدو وكأنه حقيقة بديهية له سبب وجوده. في بعض توزيعات جنو / لينكس الموجهة للمستخدم النهائي ، تكون الصدفة مخفية تمامًا. عادةً ما يطلق عليه: Konsole أو Terminal أو X Terminal أو شيء مشابه. خيار آخر هو استخدام وحدة تحكم افتراضية. باستخدام: Ctrl + Alt + f1 أو f2 أو f3 إلى f7 أو f8 ، اعتمادًا على توزيع GNU / Linux الذي تستخدمه. أكثر أنواع شل استخدامًا في GNU / Linux هي Bash ، على الرغم من وجود غيرها ، مثل ksh أو C Shell. في حالتي ، خاصة بالنسبة لمنشوراتي ، أستخدم Bash Shell.

نظرا لسيناريو صنع في باش شل يسمى hello_world.sh يمكن تفسير ما يلي:

المحتوى:

#! / بن / باش
صدى مرحبا العالم

انفصال:

السطر الأول من البرنامج النصي
#! / بن / باش

يشير إلى البرنامج الذي يجب تشغيل البرنامج النصي. إذا تعذر العثور على البرنامج ، فسيحدث خطأ.

السطر الثاني من البرنامج النصي
صدى مرحبا العالم

قم بتنفيذ أمر echo باستخدام وسيطات Hello World ، مما يؤدي إلى عرضها على الشاشة.

تنفيذ: يمكننا تشغيل البرنامج النصي بطريقتين

استدعاء المترجم الفوري لتشغيل النص:
# باش hello_world.sh

يمكن تشغيله أيضًا على النحو التالي:
# sh hello_world.sh

ولكن نظرًا لعدم استدعاء شل الخاص بك ، فقد يعمل نصفه. من الناحية المثالية ، فإن Shell الذي تم استدعاؤه في السطر الأول هو المستخدم لتنفيذه.

يمكنك أيضًا تشغيل البرنامج النصي مباشرة كما يلي:
# ./hello_world.sh

ملاحظة: ./ يشير إلى التشغيل من الدليل الحالي.

الباقي الذي يجب تحليله هو الكود الذي تدخله فيه. آمل أن تكون دائمًا قد أحببت هذه السلسلة (بعضها أكثر من غيرها ، وفقًا لاحتياجات التعلم والمعرفة) برمجة شل.

هناك العديد من الروابط الجيدة حول هذا الموضوع على الويب ، لكنني أترك لك هذا الدليل الصغير الموجود هنا في DesdeLinuxصافي وهذا الآخر دليل خارجي.

حتى آخر وظيفة!


13 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   com.d4ny قال

    ليلو .. محمل لينكس .. الباقي معلومات جيدة جدا .. شكرا .. salu2 d4ny.-

  2.   المهندس خوسيه ألبرت قال

    تحياتي لجميع أولئك الذين يتابعون الدورة التدريبية عبر الإنترنت لـ "Learn Shell Scripting" قريبًا ، سنستمر في البرامج النصية الأساسية الأخرى لمواصلة تخصيص المعرفة ومواصلة نشرها اجتماعيًا للجميع.

    أتمنى أن تظل على اطلاع لأنني سأبدأ قريبًا برموز أكثر تقدمًا ولكن يتم الكشف عنها بطريقة يمكن فهمها بصريًا على الرغم من تعقيدها.

    تذكر أنه باستخدام Shell Scripting ، يمكنك القيام بالعديد من الأشياء المعقدة التي تعمل عبر الأنظمة الأساسية (Distros المختلفة) باستخدام ملفات صغيرة جدًا. سأترك لك هذه اللقطة الصغيرة لشيء سأعلمك إياه قريبًا ، لأولئك الذين يواصلون مشاهدة الدورة ، وهذا مع 50 كيلوبايت فقط يعد بالكثير! وهو نصف ما يمكنك فعله باستخدام Shell Scripting.

    اختبار ScreenCast اختبار LPI-SB8 (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh / 43 كيلو بايت)

    انظر Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    ألبرتو كاردونا قال

      مرحبًا ، مساهمتك رائعة حقًا ، شكرًا جزيلاً لك !!
      لدي القليل من الشك ، هل يمكنني برمجة مترجم باستخدام bash؟
      أو على الأقل محلل معجمي؟
      هذه القوة؟

  3.   المهندس خوسيه ألبرت قال

    تحياتي لجميع أولئك الذين يتابعون الدورة التدريبية عبر الإنترنت لـ "Learn Shell Scripting" قريبًا سنواصل مع البرامج النصية الأساسية الأخرى لمواصلة تخصيص المعرفة والاستمرار في جعلها اجتماعية للجميع. أتمنى أن تظل على اطلاع لأنني سأبدأ قريبًا برموز أكثر تقدمًا ولكن يتم الكشف عنها بطريقة يمكن فهمها بصريًا على الرغم من تعقيدها.

    تذكر أنه باستخدام Shell Scripting ، يمكنك القيام بالعديد من الأشياء المعقدة التي تعمل عبر الأنظمة الأساسية (Distros المختلفة) باستخدام ملفات صغيرة جدًا. سأترك لك هذه اللقطة الصغيرة لشيء سأعلمك إياه قريبًا ، لأولئك الذين يواصلون مشاهدة الدورة ، وهذا مع 50 كيلوبايت فقط يعد بالكثير! وهو نصف ما يمكنك فعله باستخدام Shell Scripting.

    اختبار ScreenCast اختبار LPI-SB8 (LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh / 43 كيلو بايت)

    انظر Screencast: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   ألبيرتو قال

    هولا خوسيه ،
    أولا أشكرك على مشاركة معرفتك. مقالاتك مثيرة جدا للاهتمام.

    شيئين ، أعتقد أنه من المهم جدًا استخدام علامتي الاقتباس المزدوجة "Hello World" والحصول على إخراج واضح للنص مع المخرج 0

  5.   المهندس خوسيه ألبرت قال

    شكرًا لمساهماتك ، في السيناريو التالي ، سترى استخدام خروج 0 ، وكسر ، وغيرهما!

  6.   ويلارماند قال

    تحية.
    مثير جدا للاهتمام ، أنت تجعلها تبدو بسيطة ؛ الآن ، اكتشفت أنه لا يمكنني البرمجة في Linux باستخدام cron أو في ، إيقاف التشغيل / الإيقاف / الإسبات ، مع البدء التلقائي الناتج باستخدام الأمر rtc wake ، ولا أعرف ما إذا كان البرنامج النصي الذي يحتوي على هذا الأمر سيساعد ، أم أنهم سيتبعون cron وبدون القيام بأي شيء ، أو أنه لا يمكن القيام به ، أو يتم القيام به بشكل مختلف ، أو أنني طموح للغاية ، ولكن على نظام التشغيل Windows ، من السهل نسبيًا القيام بذلك. أرغب في الانتقال إلى Linux ، ولكن من المهم بالنسبة لي جدولة إيقاف التشغيل / الإيقاف / الإسبات وتشغيل جهاز الكمبيوتر بنفسه. مع تحياتي.

  7.   المهندس خوسيه ألبرت قال

    ربما يمنحك هذا بعض الأفكار المبتكرة: http://cirelramos.blogspot.com/2016/01/reiniciar-apagar-o-ejecutar-otra-tarea.html

  8.   ويلارماند قال

    شكرًا لك ، سأقرأها جيدًا ، وسيساعدني شيء ما. مع تحياتي.

  9.   إدواردو كومو قال

    منذ بعض الوقت ، بدأت مشروعًا أعتقد أنه فريد من نوعه. إنه نموذج أولي لـ Framewok Bash. لا يتطلب الأمر سوى Bash على النظام.
    إذا كان شخص آخر مهتمًا ، فهو مدعو لتجربته والتعاون!

    https://github.com/reduardo7/bashx

    تحيات!

    1.    اجارتو قال

      عزيزي إدواردو، أعتقد أنه مشروع رائع، ربما يمكنك مشاركته مع المجتمع بأكمله desdelinux، تذكر أنه يمكنك نشر مقال عن مشروعك على موقعنا، إذا كنت لا تعرف كيفية القيام بذلك أنصحك بالقراءة https://blog.desdelinux.net/guia-redactores-editores/ أين هي أفضل الممارسات لإنشاء المقالات في desdelinux والإجراء الذي سيتم تنفيذه. ربما يكون من الجيد جدًا بالنسبة للمجتمع أن تعرف أولاً عن فوائد مشروعك ثم تتعلم كيفية القيام بهذا النوع من الأشياء ثانيًا. نحن ندعوكم وندعو الآخرين لمشاركة مشاريعهم معنا ومع المجتمع الكبير الذي يحيط بنا.

  10.   ميغيل أورسا رويز قال

    مرحبا، صباح الخير.
    أنا جديد في عالم إدارة أجهزة Linux ، وأردت أن أعرف ما تنصحني به: ksh ، bash ، perl ، php ، python….
    شكرا جزيلا وأطيب التحيات.
    ميغيل.