دروس الوحدة (2/2)
خطوط الأنابيب والمرشحات (grep و |)
إحدى أقوى ميزات سطر أوامر Linux هي القدرة على توصيل أوامر مختلفة بحيث يصبح مخرج أحدها مدخلاً للأوامر التالية. يتم تنفيذ هذه التقنية باستخدام خطوط الأنابيب وعادةً ما يتم إقرانها بأمر تصفية النص grep.
تصفية النص: grep
يبحث الأمر grep (طباعة التعبير العادي العام) عن سلسلة نصية محددة داخل ملف واحد أو أكثر ويطبع الأسطر المطابقة:
grep "string" [file_name]خيارات مفيدة لـ grep
grep -i "error" server.log: إجراء بحث غير حساس لحالة الأحرف (يتجاهل الفرق بين الأحرف الكبيرة والصغيرة، ويبحث عن "خطأ" أو "خطأ" أو "خطأ").grep -n "connection" server.log: يعرض رقم السطر مع السطر المطابق.grep -v "INFO" server.log: يعكس البحث، ويعرض فقط الأسطر التي لا تحتوي على الكلمة الأساسية المحددة.
أوامر التسلسل: خط الأنابيب |
يتم تمثيل مشغل خط الأنابيب بالشريط العمودي |. يرسل الإخراج القياسي للأمر الموجود على اليسار مباشرةً إلى الإدخال القياسي للأمر الموجود على اليمين:
[command1] | [command2]على سبيل المثال، إذا كان ملف السجل ضخمًا وتريد البحث عن كلمة معينة دون طباعة الملف بأكمله، فيمكنك الجمع بين cat وgrep:
cat logs/server.log | grep ERRORيؤدي هذا إلى قراءة الملف server.log بالكامل مع cat، ولكن بدلاً من طباعته على الشاشة، فإنه ينقل الدفق إلى grep، الذي يقوم بتصفية وعرض الأسطر التي تحتوي على الكلمة "ERROR" فقط.
أمثلة الاستخدام والأخطاء الشائعة
إذا كنت تبحث عن كلمة صغيرة (مثل "post") في ملف يحتوي عليها بأحرف كبيرة فقط (مثل "POST")، فلن يُرجع grep أي شيء:
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)للعثور على السطر بغض النظر عن حالته، استخدم العلامة -i:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234إذا كان الملف المحدد غير موجود، فسيقوم grep بإرجاع خطأ:
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directoryجربه بنفسك
التمرين 1: البحث عن الأخطاء في ملفات السجل
قم بتصفية الملف "logs/server.log" لاستخراج وعرض الأسطر التي تحتوي على الكلمة "ERROR" فقط (حساسة لحالة الأحرف).
إظهار التلميح
استخدم الأمر grep متبوعًا بالكلمة التي تبحث عنها ومسار الملف.
الحل متاح بعد 3 من المحاولات
التمرين 2: خطوط الأنابيب والمرشحات
استخدم الأمر cat لقراءة الملف "logs/server.log" وتوجيه مخرجاته (|) إلى الأمر grep لتصفية وطباعة الأسطر التي تحتوي على الكلمة "WARNING" فقط.
إظهار التلميح
قم بتوصيل cat logs/server.log بـ grep تحذير باستخدام الأنبوب '|' شخصية.
الحل متاح بعد 3 من المحاولات
التمرين 3: بحث غير حساس لحالة الأحرف
ابحث عن جميع الأسطر التي تحتوي على كلمة "post" (سواء كانت كبيرة أو صغيرة) في ملف "logs/access.log" باستخدام علامة grep المناسبة.
إظهار التلميح
استخدم grep مع الخيار -i لتجاهل حساسية حالة الأحرف.
الحل متاح بعد 3 من المحاولات