أساسيات الطرفية
Terminal Basics
أساسيات الطرفية — Terminal Basics
قبل أن تكتب سكربتات Bash، يجب أن تشعر أن الطرفية مكان مفهوم وليست شاشة غامضة. الطرفية هي مساحة نصية ترسل فيها أوامر وتستقبل نتائج. لا توجد أزرار كثيرة، لكن توجد قاعدة بسيطة: الأمر يأخذ مدخلات، يعمل، ثم يطبع ناتجاً أو يرجع حالة نجاح أو فشل.
ابدأ بثلاثة أوامر أساسية. الأمر pwd يطبع المسار الحالي. الأمر ls يعرض محتويات المجلد. الأمر cd يغير المجلد الحالي. هذه الأوامر تبدو صغيرة، لكنها أساس كل سكربت يتعامل مع الملفات. عندما يخطئ سكربت في المسار، غالباً السبب أن الكاتب لم يكن واضحاً: هل يستخدم مساراً نسبياً من مكان التشغيل؟ أم مساراً مطلقاً يبدأ من جذر النظام؟
في Bash، المسارات التي تحتوي مسافات أو رموزاً خاصة يجب أن تُقتبس. اكتب "$folder" بدلاً من $folder. لو كان اسم المجلد my reports، فالنسخة غير المقتبسة قد تتحول إلى كلمتين. هذا الخطأ من أشهر أسباب السكربتات الهشة.
تعلم أيضاً أن كل أمر له ناتج وحالة. الناتج هو النص الذي تراه. الحالة هي رقم مخفي غالباً: 0 يعني نجاحاً، وأي رقم آخر يعني فشلاً. لاحقاً سنستخدم هذه الحالة في الشروط، لكن من الآن افهم أن Bash لا تقرأ النتيجة بعينيها؛ هي تعتمد على exit status.
المجاري الثلاثة: stdin وstdout وstderr
لكل أمر في Bash ثلاثة مجاري للبيانات:
| المجرى | الرقم | الوصف |
|---|---|---|
| stdin | 0 | المدخل القياسي — ما يقرأه الأمر (لوحة المفاتيح أو pipe) |
| stdout | 1 | المخرج القياسي — ناتج الأمر الطبيعي |
| stderr | 2 | مجرى الأخطاء — رسائل الخطأ والتحذيرات |
عندما تكتب echo "hello" يذهب الناتج إلى stdout. عندما يطبع أمر رسالة خطأ، يكتبها إلى stderr. هذا الفصل مهم: يمكن توجيه stdout إلى ملف بينما تظل رسائل الأخطاء مرئية في الطرفية، أو العكس. ستستخدم هذا الفهم كثيراً في دروس لاحقة.
نموذج أوامر يومية
الرمز $(pwd) يسمى command substitution. معناه: شغّل الأمر الموجود داخل القوسين وخذ الناتج كنص. نستخدمه عندما نحتاج حفظ نتيجة أمر في متغير. هذه قدرة قوية، لكنها تحتاج اقتباساً عند الاستخدام: "$current_dir".
عادة مهمة
لا تحفظ أو تنسخ أو تحذف بناءً على تخمين. اطبع المسار أولاً. لو كتبت سكربتاً سينسخ ملفات، اجعله في البداية يطبع: “سأنسخ من هنا إلى هنا”. هذه العادة البسيطة تمنع أخطاء كثيرة.