من الغريب حقًا كتابة "الافتتاحية" في القسم الأخير. ومع ذلك، فإن بداية المقالة الأولى (العمليات العددية) هي في الواقع افتتاحية صغيرة. يذكر أن السلسلة بأكملها تتطلب أساسًا معينًا لبرمجة شل، وذلك لتمكين القراء الذين ليس لديهم أساس لبرمجة شل بعد قراءة هذه السلسلة، وصلت إلى النهاية لإعادة كتابة هذا الفصل الافتتاحي. يقدم الفصل الافتتاحي بشكل أساسي ماهية Shell، وبيئة تشغيل Shell، وبناء جملة Shell الأساسي ومهارات تصحيح الأخطاء.
أولا، دعونا نلقي نظرة على موقع شركة شل في نظام التشغيل بأكمله من الشكل التالي. تصف الدائرة الخارجية للشكل نظام التشغيل بأكمله (مثل
ديبيان/أوبونتو/سلاكويروما إلى ذلك)، تصف الدائرة الداخلية جوهر نظام التشغيل (على سبيل المثال.
نواة لينكس)،و
صدَفَةو
واجهة المستخدم الرسوميةيعمل أيضًا كواجهة بين المستخدم ونظام التشغيل.
واجهة المستخدم الرسوميةيوفر واجهة مستخدم رسومية سهلة الاستخدام وسهلة التعلم
صدَفَةيوفر للمستخدمين واجهة سطر أوامر، ويستقبل مدخلات لوحة المفاتيح للمستخدم، ويحلل وينفذ الأوامر في سلسلة الإدخال، ثم يعيد نتائج التنفيذ إلى المستخدم. قد يكون استخدامه أكثر تعقيدًا، ولكنه يستهلك موارد أقل علاوة على ذلك، بعد أن تصبح ماهرًا في التشغيل، يمكن تحسين كفاءة العمل، ولها وظيفة معالجة الدُفعات، لذلك تحظى بشعبية كبيرة في بعض التطبيقات.
صدَفَةكواجهة مستخدم، فهي في الواقع مترجم فوري (مترجم فوري، كما هو الحال في
لينكسفيما يلي أكثر استخدامًا
سحق)، يمكننا عرض التيار
صدَفَة:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 جذر الجذر 702160 2008-05-13 02:33 /bin/bash
لا يستطيع المترجم تفسير الأوامر البسيطة فحسب، بل يمكنه أيضًا تفسير ملف ببنية بناء جملة محددة، تسمى البرنامج النصي. كيفية تفسير هذه الأوامر وملفات البرامج النصية على وجه التحديد لم يتم تحليلها بعمق هنا، يرجى الاطلاع على مقال آخر كتبته في عام 2008: "لحظة تنفيذ البرنامج على سطر أوامر Linux."
نظرًا لأن البرنامج يمكنه تفسير الملفات ببنية نحوية معينة، فيمكننا اتباع قواعد نحوية معينة لكتابتها. ما نوع القواعد النحوية الموجودة فيه، وكيفية تشغيله، وكيفية تصحيح أخطائه؟ أدناه نستخدم
سحقدعونا نناقش هذه الجوانب مع مثال.
لتسهيل التمارين التالية، قمنا أولاً بإعداد بيئة تشغيل أساسية: في نظام التشغيل Linux، يوجد تشغيل
سحقينتظر سطر الأوامر أن نكتب الأمر. يمكن أن يكون سطر الأوامر هذا ضمن الواجهة الرسومية.
صالة(على سبيل المثال
أوبونتوقوية جدا
المنهي)، أو يمكن أن تكون واجهة شخصية
وحدة التحكم(يمكن استخدامها
CTRL+ALT+F1~6تبديل) إذا وجدت التيار
صدَفَةلا
سحق، يرجى استبداله بما يلي:
$ chsh $USER -s /bin/bash$ su $USER
أو ببساطة اكتب Bash:
$ bash$ echo $Shell # تأكيد /bin/bash
إذا لم يكن لديك نظام تشغيل Linux مثبتًا، فيمكنك أيضًا التفكير في استخدام خدمات تجربة Linux الافتراضية التي توفرها بعض المجتمعات العامة، والتي توفر بشكل عام خدمات التحكم عن بعد
صدَفَة، يمكنك المرور
تلنتأو هو
سشقم بتسجيل الدخول إلى العميل للممارسة.
مع بيئة التشغيل الأساسية، كيفية تشغيل الأوامر التي كتبها المستخدم أو ملف البرنامج النصي الذي كتبه المستخدم؟
؟
لنفترض أننا كتبنا نصًا برمجيًا لـ Shell يسمى
test.sh.
الطريقة الأولى هي التأكد من أن الأمر الذي نقوم بتنفيذه لديه أذونات قابلة للتنفيذ ومن ثم كتابة الأمر مباشرة لتنفيذه:
$ chmod +x /path/to/test.sh$ /path/to/test.sh
الطريقة الثانية هي كتابة البرنامج النصي مباشرة كـ
سحقيتم تمرير معلمات المترجم في:
$ باش /path/to/test.sh
أو
$ المصدر /المسار/إلى/test.sh
أو
$ ./path/to/test.sh
واحد أولا
مرحبا بالعالمبرنامج.
دعونا نقدم الهيكل الأساسي لبرنامج شل
مرحبا بالعالمعلى سبيل المثال:
#!/bin/bash -v# test.shecho مرحبًا بالعالم
احفظ الكود أعلاه باسم
test.sh، ثم قم بتشغيله بالطريقتين المختلفتين أعلاه، يمكنك رؤية التأثيرات التالية.
الطريقة الأولى:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo أهلا بالعالم أهلا بالعالم
الطريقة الثانية:
$ bash test.shHello، مصدر World$ test.shHello، World$ test.shHello، World
لقد وجدنا أن هناك فرقا بين النتيجتين الجاريتين لماذا؟ وهنا علينا أن ننتبه
test.shمحتوى الملف، به سطرين فقط، تتم طباعة السطر الثاني
مرحبا بالعالمكلا الطريقتين تحققان غرضهما، لكن الطريقة الأولى تطبع محتوى أكبر من ملف البرنامج النصي نفسه، لماذا؟
السبب موجود في السطر الأول من الملف. عندما نقوم بتشغيل ملف البرنامج النصي مباشرة، يخبر هذا السطر نظام التشغيل بالاستخدام
#!يتم استخدام المترجم والمعلمات المقابلة بعد الرمز لتفسير ملف البرنامج النصي. من خلال تحليل السطر الأول، وجدنا أن المترجم والمعلمات المقابلة هي
/ بن / باش -v،و
-vويصادف أن يتم طباعة الكود المصدري للبرنامج لكننا لم نقم بإعطاءه عند استخدام الطريقة الثانية.
سحققم بتمرير أي وسيطات إضافية، بحيث يفسر ملف البرنامج النصي نفسه ببساطة.
للحصول على تفاصيل أخرى حول بناء الجملة، يرجى الرجوع مباشرة إلى "ملاحظات دراسة برمجة Shell"، وهو الملحق 1 في الجزء الخلفي من هذا الكتاب.
لغة Shell هي لغة مترجمة، وعملية البرمجة الخاصة بها تختلف إلى حد ما عن تلك الخاصة باللغات المترجمة، والعملية الأساسية هي كما يلي:
خوارزمية التصميم
استخدم Shell لكتابة البرامج النصية لتنفيذ الخوارزميات
قم بتشغيل البرنامج النصي مباشرة
يمكن ملاحظة أنه لا يحتوي على عملية التجميع والربط المزعجة للغات المترجمة، ولكن لهذا السبب على وجه التحديد، ليس من المناسب جدًا تصحيح الأخطاء عند حدوث خطأ، لأن أخطاء بناء الجملة والأخطاء المنطقية تظهر في وقت التشغيل. أدناه نقدم لفترة وجيزة طريقة التصحيح.
يمكنك الرجوع مباشرة إلى: تقنية تصحيح أخطاء البرنامج النصي Shell أو طريقة تصحيح أخطاء BASH.
باعتبارها لغة مفسرة، يمكن للغة Shell استخدام عدد كبير من الأدوات الموجودة، بما في ذلك الحسابات الرقمية، والمعالجة الرمزية، وعمليات الملفات، وعمليات الشبكة، وما إلى ذلك. لذلك، قد تكون عملية الكتابة أكثر كفاءة، ولكن بسبب تفسيرها، فإنها تحتاج إلى ليتم تنفيذها أثناء التنفيذ، أثناء العملية، قد يكون لاستدعاء البرامج الخارجية بشكل مستمر من القرص والتبديل بين العمليات عيوب من حيث كفاءة التشغيل، لذا يجب أن نختار استخدام Shell أو لغات أخرى للبرمجة حسب التطبيق.
لحظة تنفيذ البرنامج على سطر أوامر Linux
ملاحظات دراسة برمجة Linux Shell
تقنية تصحيح أخطاء البرنامج النصي Shell
طرق تصحيح BASH