سطر الأوامر في Linux: الأوامر والخيارات والأنابيب
في الدرس السابق كتبت أوامر بسيطة مثل pwd و ls و echo. الآن ستفهم لغة سطر الأوامر نفسها: كيف يُبنى أي أمر، وكيف تعرف خياراته، وكيف تربط أوامر صغيرة ببعضها لتنجز مهاماً كبيرة. هذه القدرة على التركيب هي سر قوة Linux وسبب حب المبرمجين له.
تركيب الأمر
Section titled “تركيب الأمر”أغلب أوامر Linux تتبع نفس الشكل:
الأمر [الخيارات] [المعاملات]ls -l Documentsls: الأمر، أي البرنامج الذي سيُنفَّذ.-l: خيار (Option) يغيّر سلوك الأمر، ويبدأ عادة بشرطة. هنا: «اعرض التفاصيل».Documents: معامل (Argument)، أي الشيء الذي يعمل عليه الأمر. هنا: المجلد المطلوب عرضه.
تخيّل الأمر مثل طلب في مطعم: قهوة هو الأمر، و«بدون سكر» خيار، و«للطاولة رقم 5» معامل.
الخيارات
Section titled “الخيارات”lsDocuments Pictures fruits.txtls -a. .. Documents Pictures fruits.txtالخيار -a (من all) أظهر عناصر إضافية: . تعني المجلد الحالي، و .. المجلد الأب. وستعرف لاحقاً أن أي ملف يبدأ اسمه بنقطة يكون مخفياً.
ويمكن دمج عدة خيارات: ls -l -a تساوي ls -la. وبعض الخيارات لها اسم طويل بشرطتين، مثل ls --all التي تساوي ls -a.
كيف تعرف خيارات أي أمر؟
Section titled “كيف تعرف خيارات أي أمر؟”لا أحد يحفظ كل الخيارات! استخدم المساعدة المدمجة:
ls --helpman ls--help: ملخص سريع للخيارات في الطرفية.man(من manual): الدليل الكامل للأمر. تنقّل فيه بالأسهم، وابحث بـ/ثم الكلمة، واخرج بالحرفq.
المتغيرات في الطرفية
Section titled “المتغيرات في الطرفية”name="سارة"echo "أهلاً يا $name"أهلاً يا سارةانتبه: لا مسافات حول = عند تعريف المتغير. و $name تستبدل اسم المتغير بقيمته. وهناك متغيرات جاهزة في النظام، مثل $HOME لمجلدك الشخصي و $USER لاسم المستخدم.
أكثر من أمر في سطر واحد
Section titled “أكثر من أمر في سطر واحد”mkdir projects && cd projects&& تعني: «نفّذ الأمر الثاني فقط إذا نجح الأول». لو فشل إنشاء المجلد، لن نحاول الدخول إليه.
false && echo "لن يُطبع"false; echo "يُطبع دائماً"يُطبع دائماً(false أمر لا يفعل شيئاً سوى أن «يفشل»، ونستخدمه هنا للتجربة.) الفاصلة المنقوطة ; تنفّذ الأوامر بالتتابع مهما حدث، أما && فتتوقف عند أول فشل.
إعادة التوجيه: > و >>
Section titled “إعادة التوجيه: > و >>”بدلاً من عرض النتيجة على الشاشة، يمكنك حفظها في ملف:
echo "السطر الأول" > notes.txtecho "السطر الثاني" >> notes.txtcat notes.txtالسطر الأولالسطر الثاني>: اكتب في الملف، ويُمسح محتواه القديم إن وُجد.>>: أضف في نهاية الملف دون مسح ما فيه.cat: يعرض محتوى الملف.
الأنبوب: |
Section titled “الأنبوب: |”هنا السحر الحقيقي. الأنبوب (Pipe) يأخذ مخرجات أمر ويجعلها مدخلات لأمر آخر. لنفترض ملف fruits.txt فيه: تفاح، موز، تفاح، عنب (كل كلمة في سطر):
sort fruits.txtتفاحتفاحعنبموزsort fruits.txt | uniq -c 2 تفاح 1 عنب 1 موزsort رتّب الأسطر، ثم مرّر النتيجة بالأنبوب إلى uniq -c الذي عدّ تكرار كل سطر. بأمرين صغيرين حصلنا على إحصاء كامل!
تخيّل الأنبوب مثل خط إنتاج في مصنع: كل محطة تأخذ المنتج من المحطة السابقة، وتضيف عليه عملها، وتمرره للتالية.
أمثلة أخرى مفيدة:
grep "تفاح" fruits.txt # الأسطر التي تحتوي الكلمةls | wc -l # عدد الملفات والمجلداتgrep يبحث عن نص داخل ملف أو مخرجات، و wc -l يعدّ الأسطر. فلسفة Linux: أدوات صغيرة، كل أداة تتقن شيئاً واحداً، وتتعاون عبر الأنابيب.
سجل الأوامر
Section titled “سجل الأوامر”- السهم لأعلى: يسترجع الأوامر السابقة واحداً واحداً.
history: يعرض قائمة مرقمة بالأوامر التي كتبتها.- Ctrl + R: ابحث في السجل بكتابة جزء من أمر قديم.
- Ctrl + C: أوقف الأمر الذي يعمل الآن.
clearأو Ctrl + L: نظّف الشاشة.
جرّب بنفسك
Section titled “جرّب بنفسك”افتح الطرفية (أو Git Bash على ويندوز) وجرّب:
- اعرض مساعدة الأمر
mkdirبـ--help، وابحث عن معنى الخيار-p. - أنشئ ملفاً فيه أسماء 5 من أصدقائك باستخدام
echoمع>ثم>>. - اعرض الأسماء مرتبة بـ
sort. - استخدم
grepمع أنبوب لتعرض الأسماء التي تحتوي حرفاً معيناً. - تحدٍّ: احسب عدد الأسماء المكررة في ملف باستخدام
sortوuniq -c.
أخطاء شائعة
Section titled “أخطاء شائعة”- مسافات حول = في المتغيرات:
name = "سارة"تعطي خطأcommand not found، لأن الطرفية تفهمnameكأمر. - > بدل >>: تمسح الملف بدلاً من الإضافة إليه.
- حالة الأحرف: Linux يفرّق بين
lsوLS، وبينNotes.txtوnotes.txt.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
في الأمر ls -l Documents، ما هو الخيار؟
الخيار يبدأ بشرطة ويغيّر سلوك الأمر، و ls هو الأمر، و Documents هو المعامل.
سؤال
ما وظيفة الأنبوب | في sort names.txt | uniq؟
الأنبوب يربط الأوامر: مخرجات sort تصبح مدخلات uniq.
الخلاصة
Section titled “الخلاصة”- الأمر يتكون من اسم، ثم خيارات تبدأ بشرطة، ثم معاملات.
--helpوmanلمعرفة خيارات أي أمر.&&تنفّذ التالي عند النجاح فقط، و;تنفّذ بالتتابع دائماً.>تكتب في ملف وتمسح القديم، و>>تضيف في نهايته.- الأنبوب
|يربط أوامر صغيرة لتنجز مهام كبيرة، مثلsort | uniq -c.