محتويات الدورة

Bash / الأساسي: القواعد والقيم والتحكم / الدرس 1

قراءة Bash كلغة أوامر

تتبع الكلمات والقواعد والتوسعة والتوجيه والبحث والحالة بدلاً من اعتبار السطر سلسلة غامضة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تمييز التحليل من التوسعة والتنفيذ.
  • شرح حدود الأمر المضمن والخارجي.
  • اختيار Bash صراحة عند الحاجة إلى ميزاته.

تفسر الصدفة البنية قبل البيانات

Bash صدفة تفاعلية ولغة برمجة لوصل الأوامر. تتعرف الكلمات والعوامل وتحلل القواعد ثم توسع ما يلزم وتهيئ التوجيه وتنفذ الناتج. تفصل مسافات المصدر الكلمات وتحفظ علامات الاقتباس معاني مختارة. تفصل الفاصلة المنقوطة المكتوبة في القواعد الأوامر، بينما تكون داخل متغير مقتبس بيانات عادية. لذلك تختلف سلسلة تشبه أمراً عن قائمة وسائطه.

تُحل الأسماء ضمن سياق تنفيذ

قد يحدد الاسم دالة أو أمراً مضمنًا أو ملفاً عبر PATH، وتؤثر آليات تفاعلية كالأسماء المستعارة أيضاً. يعدل المضمن الصدفة مباشرة ولا يعيد الابن كتابة مجلد الأم. افحص الحل عند اختلاف السلوك. لا تعتمد البرامج على أسماء شخصية أو ملفات بدء تفاعلية. أعلن المفسر والأدوات ولا تفترض أن sh هو Bash أو أن للأمر تنفيذاً واحداً.

bash فحص مضمن وتمرير وسيط واحد
printf 'builtin=%s\n' "$(type -t printf)"
printf '%s\n' 'two words'
الناتج المتوقع
builtin=builtin
two words

يُستعلم type داخل Bash، ويتلقى printf الثاني سلسلة مقتبسة واحدة. المثال مكتف بذاته ولا يقرأ ملفات المضيف.

تغير التوسعة القيم وأحياناً عدد الكلمات

تسبق توسعة الأقواس توسعة المتغيرات ثم يأتي التقسيم وتوسعة الأسماء حيث ينطبقان. تزيل إزالة الاقتباس علامات المصدر لا علامات ظهرت في بيانات المتغير. لذلك لا يعيد تخزين الاقتباس فيه تجميع المصدر. تحفظ "$@" والمصفوفات المقتبسة قائمة موجودة، ويحفظ العدد المفرد قيمة واحدة. افهم الحدود قبل إضافة هروب عشوائي؛ وندرس التقسيم والأنماط تالياً.

تحدد القواعد وقت تنفيذ الأوامر

تسلسل القوائم الأوامر أو تستخدم الشرط. ينفذ && الثاني بعد صفر و|| عند غيره. تنشئ الأقواس المستديرة تجميعاً فرعياً وتجمع المعقوفة في الصدفة الحالية ما لم يفرض سياق آخر ابناً. لها قواعد وفواصل وليست ترقيمًا متبادلاً. توقع التدفق بأمثلة صغيرة وفضّل البنية متعددة الأسطر للشروط والآثار المتعددة.

bash مقارنة بيئتي تجميع
value=outer
(value=inner; printf 'child=%s\n' "$value")
{ value=group; }
printf 'parent=%s\n' "$value"
الناتج المتوقع
child=inner
parent=group

يُعزل إسناد الابن، بينما يغير تجميع المعقوفة قيمة الصدفة الحالية. لا يغير المثال إلا حالة عمليته.

فصل متطلبات Bash من POSIX sh

يختار shebang المفسر عند التنفيذ المباشر ويختار bash file المفسر صراحة. أما sh file فيطلب تنفيذ sh المحدد وقد يفشل مع المصفوفات رغم السطر الأول. يغير وضع POSIX بعض سلوك Bash ولا يغني عن اختبار الصدف المستهدفة. سجل الإصدار وراجع توثيقه للحديث. نعلن إصدار التحقق ونميز الامتدادات بدلاً من تعميمها.

الأخطاء الشائعة وإصلاحها

توقع تجميع الوسائط باقتباس مخزن

لماذا يحدث؟
اختلطت البيانات بالقواعد المحللة.
كيف تصلحه؟
ابن وسائط مقتبسة أو مصفوفة مباشرة.
كيف تتجنب تكراره؟
افصل قواعد المصدر عن القيم.

توقع تغيير مجلد الأم من الابن

لماذا يحدث؟
أُهملت حدود التنفيذ.
كيف تصلحه؟
غير المجلد في الصدفة المقصودة.
كيف تتجنب تكراره؟
ميز عمليات الحالية والابن.

تشغيل قواعد Bash عبر sh

لماذا يحدث؟
لا يوفر المفسر الامتداد.
كيف تصلحه؟
استدع المفسر المطلوب أو أعد الكتابة محمولاً.
كيف تتجنب تكراره؟
أعلن اللغة قبل التنفيذ.

اختبر فهمك

1. لماذا لا تصبح فاصلة منقوطة في "$value" أمراً ثانياً؟

اعرض الحل المشروح

حللت الصدفة العوامل قبل توسعة المتغير. تقدم التوسعة بيانات لوسيط ولا تعيد التحليل. يضيف التقييم المنفصل تحليلاً وحداً أمنياً تتجنبه الوسائط العادية.

2. اختر استدعاء برنامج يحتاج مصفوفات ترابطية.

اعرض الحل المشروح

اختر إصدار Bash داعماً ونفذ bash script.sh أو shebang صحيحاً للمباشر. لا تستبدله بـ sh، ووثق الاعتماد.

أهم ما تعلمته

  • افهم القواعد والتوسعة والوسائط والبيئة منفصلة.
  • أعلن متطلبات المفسر.

المراجع الرسمية