التيرمينال نافذة، الشيل اللي سامع
الـ terminal برنامج بيرسم الشباك ويستقبل الكيبورد. الـ shell البرنامج اللي جوه، بيقرأ السطر وينفّذه. أشهرهم على Linux هو bash. في كمان zsh و sh. الشكل قريب، والتفاصيل بتفرق لما تكتب سكربت.
السطر اللي مستنيك اسمه الـ prompt. بتكتب أمر وتضغط Enter. الشيل يخلّص، ويطلّع prompt جديد. مفيش prompt جديد يعني الأمر لسه شغال.
السطر مش بيتنفّذ كجملة واحدة
الشيل بيقص السطر لكلمات. أول كلمة اسم البرنامج. الباقي حجج (arguments) بتوصّله. الشيل بيدوّر على البرنامج في قائمة فولدرات اسمها PATH، إلا لو كتبت مسار فيه / زي ./script.sh.
ls -la /tmp# ls = البرنامج# -la = خيار (option)# /tmp = حجة: المسار اللي يتلسّطls مش جزء من الشيل في العادة. ده برنامج لوحده. الشيل لقاه، شغّله، واستناه يخلّص، وبعدين رجّع لك الـ prompt. البرامج دي اسمها أوامر خارجية. في أوامر مبنية جوه الشيل نفسه زي cd و export، لأن لازم تغيّر حالة الشيل مش برنامج ابن هيموت ويرجع.
الرقم ده الـ exit code. صفر يعني تمام. أي رقم تاني يعني فشل. هنبني عليه && و || في فصل الفاصل.
تفاعلي ولا سكربت
لما بتكتب بإيدك، الشيل تفاعلي: فيه prompt وتاريخ (history) وإكمال بـ Tab. لما تحط الأوامر في ملف وتشوّره، الشيل بيقرأ الملف سطر سطر من غير ما يستناك. نفس القواعد تقريبًا، بس مفيش حد يصلّح الغلطة في نصها.
تجربة، تنقّل، أمر مرة واحدة. الغلط رخيص لأنك شايف الناتج فورًا.
نفس الأوامر، بتتكرر. الغلط غالي لأن الملف ممكن يتمسح وهو نايم. عشان كده التنصيص و set -euo pipefail مش ترف.
تلات مفاتيح هتتعود عليهم
Tab بيكمّل أسماء الملفات والأوامر. السهم لفوق يرجّع آخر أمر. Ctrl+R يدوّر في التاريخ. دول مش أوامر، دول الشيل وهو لسه سامعك.