فتح المجلد
حدد المجلد الذي يحتوي على السكربت كمجلد عمل؛ تعمل أدوات الملفات مثل read_file وgrep داخل هذا المجلد. أما أدوات Shell وweb وSSH فلا تقتصر على هذا المجلد.
يمكن تشغيل سكربت Bash بثلاث طرق: باستخدام الأمر bash script.sh arg1 arg2، أو ./script.sh بعد إعطاء إذن التنفيذ chmod +x (والذي يعمل بفضل سطر Shebang)، أو عبر الأمر الداخلي exec الذي يستبدل عملية القشرة ولا يعود. الصيغة الأولى هي الأسهل للبدء بها لأنها لا تتطلب تغيير الأذونات. تقوم الأداة Shell بتشغيل الأمر في البيئة التي اخترتها، وهي WSL على جهاز الكمبيوتر الخاص بك أو نظام Linux تملكه وتم الوصول إليه عبر SSH، وتعرض البطاقة في الدردشة المخرجات الفعلية ورمز الخروج. أنت تتحكم في الوسائط، لذا يمكنك اختبار الحالة الطبيعية وحالة الخطأ في محادثة واحدة. كثير من المستخدمين يسألون عن الصيغة الأنسب: استخدم bash script.sh أثناء مرحلة الاختبار لأنه يعمل حتى لو لم يكن للسكربت إذن التنفيذ، وانتقل إلى ./script.sh بمجرد أن يصبح السكربت جاهزًا ويبدأ بسطر Shebang. بغض النظر عن الصيغة التي تختارها، فإن رمز الخروج هو نفس الرقم، من 0 إلى 255، حيث يعني 0 دائمًا انتهاء السكربت بنجاح.
حدد المجلد الذي يحتوي على السكربت كمجلد عمل؛ تعمل أدوات الملفات مثل read_file وgrep داخل هذا المجلد. أما أدوات Shell وweb وSSH فلا تقتصر على هذا المجلد.
استخدم Ask first لمراجعة كل تغيير كاختلاف (diff)، أو Plan only لقراءة الخطة أولاً. يعمل وضع Auto-run فوراً. يتوقف Ask first فقط قبل الإجراءات التي تغير شيئاً.
صف عملية التشغيل بكلمات بسيطة، على سبيل المثال: شغّل السكربت بالوسيط test. حدد WSL أو الخادم الخاص بك إذا كان لديك كلاهما. اذكر اسم السكربت ووسائطه بدقة.
افتح البطاقة لرؤية المخرجات ورمز الخروج الحقيقي، ثم اقبل أو ارفض أي تعديل. الرقم غير الصفري يحمل معلومات. شغّل السكربت مرة أخرى بعد كل تعديل مقبول. قارن النتيجة مع ما كنت تتوقعه.
bash greet.sh testexit 0bash greet.shexit 2greet.shreadUsage1 match#!/usr/bin/env bash
# greet.sh - print a greeting a few times
set -eu
if [ "$#" -lt 1 ]; then
echo "Usage: $0 NAME [COUNT]" >&2
exit 2
fi
name="$1"
count="${2:-1}"
for i in $(seq 1 "$count"); do
echo "Hello, $name ($i)"
done
exit 0يتوقف greet.sh بسطر استخدام ورميز خروج 2 عند غياب الاسم، ويقبل عدداً اختيارياً بقيمة افتراضية 1، ويقتصر على طباعة التحيات في حلقة. اقرأه مرة واحدة قبل تشغيله: لا يستخدم sudo، ولا يقوم بتحميل ملفات، ولا ينقل أو يحذف أي ملف، لذا فهو آمن للاختبار على أي جهاز تملكه. سطراً بسطر: يحدد Shebang المفسر، يوقف set -eu السكربت عند الأخطاء والمتغيرات غير المعرفة، يتحقق test $# من عدد الوسائط، وتقتصر حلقة for على الطباعة.
ابدأ بمجلد عمل فارغ. اطلب من الوكيل كتابة المثال أعلاه، وسينشئ write_file ملف greet.sh في هذا المجلد. افتح البطاقة واقرأ الملف سطراً بسطر: السطر الأول هو Shebang الذي يحدد المفسر، يوقف set -eu السكربت عند الأخطاء والمتغيرات غير المعرفة، ويحمي التحقق من $# باقي السكربت من غياب الاسم. في وضع Ask first، ينتظر الملف الجديد موافقتك قبل كتابته. لم يتم تشغيل أي شيء بعد. يختار فرع الاستخدام في هذا السكربت الرقم 2 للاستخدام الخاطئ، وهو اتفاقية شائعة. اقبل الملف فقط عندما تفهم كل سطر، وإذا لم تفهم، اطلب من الوكيل شرحه. يترك التعديل المرفوض المجلد دون تغيير.
الأشخاص الذين يبحثون عن "bash execute script" يريدون عادة سطراً واحداً: bash greet.sh test. اطلب من الوكيل تشغيله، وتبدأ Shell بالأمر في بيئة دردشتك، مثل WSL، وترسل المخرجات الفعلية ورمز الخروج الحقيقي. وسّع البطاقة لعرض المخرجات الكاملة. ثم اطلب نفس التشغيل بدون الوسيط، ويجب أن ترى سطر الاستخدام ورميز الخروج 2. رمز الخروج لتطبيقات سطر الأوامر هو رقم من 0 إلى 255 يقرأه المستدعي، و0 يعني النجاح. يعني رمز الخروج 127 عدم العثور على الأمر، و126 يعني عدم إمكانية تنفيذ الملف، لذا يشير هذان الرقمان إلى خطأ مطبعي، أو برنامج مفقود، أو نقص في إذن التنفيذ.
يظهر read_file محتوى السكربت، ويعثر grep على أماكن استخدام $1 و$2، لذا يمكنك التحقق من أن كل وسيط له قيمة افتراضية أو رسالة خطأ. إليك كيفية تحليل الوسائط الاختيارية: يمرر السكربت الحلقات باستخدام getopts، وبقيم واحدة أو اثنتين فقط، تكون $1 و${2:-1} كافية. لا تتصرف البدائل (aliases) ذات الوسائط مثل الدوال، لأن البديل يستبدل الكلمة المكتوبة بالنص فقط، لذا استخدم دالة عندما يجب أن تكون القيم في المنتصف. اطلب من الوكيل تغيير شيء واحد، على سبيل المثال القيمة الافتراضية للعدد، واقرأ الاختلاف الذي يظهره edit_file. ثم شغّل السكربت مرة أخرى وقارن رمز الخروج الجديد بالقديم. يمكن لـ Plan only سرد المعلمات التي يفهمها السكربت دون تشغيل أي شيء.
نفس الخطوات تعمل عندما تكون بيئة العمل نظام Linux تملكه، وتم الوصول إليه عبر SSH. تستمر أدوات الملفات في العمل في مجلد عمل الدردشة، بينما تعمل أوامر Shell في البيئة التي اخترتها، لذا تحقق من أي بطاقة تشير إليها. يستبدل الأمر الداخلي exec، الذي يبحث عنه الناس كـ "bash exec script"، قشرة النظام بأمر آخر ولا يعود، لذا لا يعمل أي شيء بعده ورميز الخروج هو الخاص بالأمر الجديد. احتفظ بنسخة احتياطية قبل أن ينقل السكربت أو يحذف الملفات، شغّله مع echo أولاً كاختبار جاف، واستخدم فقط الآلات التي يسمح لك بإدارتها. اقرأ البطاقة النهائية قبل إغلاق الدردشة. عندما تمرر جميع القيم إلى أمر آخر، اكتب "$@" بين علامات اقتباس مزدوجة بحيث تحتفظ كل قيمة بشكلها.