Bash
تعلم كتابة سكربتات Bash من المتغيرات إلى سكربتات جاهزة للإنتاج. الحلقات, المصفوفات, الاعتراضات, set -euo pipefail, ومشروع تطبيقي لتهيئة خادم.
12 درسًا، بالترتيب
- 120 دقيقة
ما هو Bash
أهلًا بك. إن لم يسبق لك أن فتحت طرفية في حياتك، فأنت في المكان الصحيح. قبل أن نكتب أمرًا واحدًا، سنقضي عشر دقائق في توضيح ما هو Bash فعلًا، وما الذي...
Shell vs terminalBash vs sh vs zshInteractive shell vs scriptWhere Bash fits in DevOps - 225 دقيقة
سطر Shebang وأول سكريبت لك
إن كانت كلمة «سكربت» ما زالت تبدو لك شيئاً لا يكتبه إلا المبرمجون الحقيقيون، فاطمئن. السكربت ملف نصي فيه قائمة أوامر، لا أكثر، وبنهاية هذا الدرس...
Shebang#!/usr/bin/env bashChmod +x./script.sh vs bash script.shExit codes - 325 دقيقة
المتغيرات وعلامات الاقتباس
إن لم تستعمل متغيّراً من قبل فلا تقلق. هي من أبسط الأفكار في هذا الكورس كله، ونسخة Bash منها في غاية البساطة. يغطّي هذا الدرس أيضاً علامات الاقتباس،...
Variable assignmentDouble quotes vs single quotes${var} bracesCommand substitution $(...) - 430 دقيقة
الشروط والاختبارات
كل سكربت كتبته حتى الآن ينفّذ الأسطر نفسها مهما كانت الظروف. لكن السكربتات الحقيقية تحتاج أن تتّخذ قرارات: "افعل هذا فقط إن كان ذلك الملف موجودًا"،...
If statement[[ ]] testsString testsFile tests -f -d -e&& and ||Case statement - 525 دقيقة
الحلقات
حتى الآن ينفّذ كل سكربت كتبته كل سطر فيه مرة واحدة بالضبط، من أعلى إلى أسفل. لا بأس بذلك في السكربتات القصيرة، لكن العمل الحقيقي متكرر: أعد تسمية...
For loopWhile loopUntil loopFor f in *.txt globbingC-style for loopBreak and continue - 625 دقيقة
الدوال
سكربتاتك الآن بدأت تكرر نفسها. ربما تسجّل رسالة مختومة بالوقت في ثلاثة مواضع مختلفة، أو تفحص وجود ملف قبل أن تمسّه، مرة بعد مرة، بالأسطر الثلاثة...
Function definitionPositional args $1 $@ $#Return for exit codesEcho for outputLocal variables - 725 دقيقة
المصفوفات
حتى الآن، المتغيّر الواحد يحمل قيمة واحدة. name="Ada" يحمل سلسلة نصية واحدة. ولو أردت حمل ثلاثة أسماء لاحتجت إما ثلاثة متغيّرات منفصلة، name1 وname2...
Indexed arrays${arr[@]}${#arr[@]} lengthAssociative arrays declare -AIterating arrays - 825 دقيقة
توسيع النصوص والعمليات الحسابية
ستجد نفسك باستمرار أمام متغيّر يحمل ما تريده تقريبًا، لا تمامًا. مسار ملف كامل وأنت لا تريد إلا اسم الملف. اسم ملف وأنت لا تريد إلا امتداده. جملة...
${var#prefix}${var%suffix}${var//old/new}$(( arith ))Printf formatting - 925 دقيقة
إعادة توجيه المدخلات والمخرجات والأنابيب
كل أمر تشغّله في Bash موصول تحت السطح بثلاث قنوات منفصلة، سواء انتبهت إليها يومًا أم لا. تخيّل آلة فرز بريد: تدخل الرسائل من فتحة واحدة، ويخرج البريد...
>>><2>2>&1&>+3 - 1030 دقيقة
معالجة الأخطاء و Traps
كل سكربت كتبته حتى الآن يفترض أن الأمور تسير على ما يرام. أمر لا يجد ملفاً، أو مجلد غير موجود، أو خطأ إملائي في اسم متغيّر: كل هذه يتجاهلها Bash...
Set -eSet -uSet -o pipefailTrap on EXITTrap on ERRCleanup functions - 1125 دقيقة
تصحيح الأخطاء وأفضل الممارسات
في لحظة ما سيفعل سكربت كتبته شيئاً لم تطلبه منه. سيحذف الملف الخطأ، أو يتخطّى الحلقة التي كنت واثقاً أنه سيشغّلها، أو ينتج نتيجة فارغة بصمت. ستقرؤه...
Bash -xSet -xShellcheckSafe quotingNever parse ls[[ vs [+1 - 1260 دقيقة
مشروع التخرج: سكربت تهيئة الخادم
الخادم الجديد تمامًا جهاز لا شيء عليه. لا بد لأحد أن يثبّت خادم الويب، وينشئ الحساب الذي ستدخل به، ويضع مفتاح SSH في مكانه، ويجدول الفحوص التي تخبرك...
Idempotent provisioningInstalling packagesCreating usersSSH key setupSystemd timersLogging+2
تعلّم Bash بلغتك
كل درس واختبار ورد من المدرس يظهر بلغتك. المدرس الذكي يرد بنفس اللغة التي تكتب بها.
Roles that use Bash
See how hiring teams interview engineers on Bash, in production-like environments.
DevOps Engineer
Hire DevOps engineers who actually ship. Run live or take-home interviews in production-like Linux environments with Docker, Kubernetes, Terraform and CI/CD. See how they debug, automate, and work alongside AI.
See the interviewSite Reliability Engineer (SRE)
Hire SREs who actually run production. Live workspaces with metrics, logs, traces and a service that is starting to misbehave. We record every keystroke.
See the interviewInfrastructure Engineer
Hire infrastructure engineers who design systems your team can rely on. Interview them in real workspaces with Terraform, Ansible, cloud APIs and live failure scenarios.
See the interview