الانتقال إلى المحتوى الرئيسي
الوحدة 3 · الدرس 2 من 27/11 في الدورة~15 min
دروس الوحدة (2/2)

خطوط الأنابيب والمرشحات (grep و |)

إحدى أقوى ميزات سطر أوامر Linux هي القدرة على توصيل أوامر مختلفة بحيث يصبح مخرج أحدها مدخلاً للأوامر التالية. يتم تنفيذ هذه التقنية باستخدام خطوط الأنابيب وعادةً ما يتم إقرانها بأمر تصفية النص grep.


تصفية النص: grep

يبحث الأمر grep (طباعة التعبير العادي العام) عن سلسلة نصية محددة داخل ملف واحد أو أكثر ويطبع الأسطر المطابقة:

Bash
grep "string" [file_name]

خيارات مفيدة لـ grep

  • grep -i "error" server.log: إجراء بحث غير حساس لحالة الأحرف (يتجاهل الفرق بين الأحرف الكبيرة والصغيرة، ويبحث عن "خطأ" أو "خطأ" أو "خطأ").
  • grep -n "connection" server.log: يعرض رقم السطر مع السطر المطابق.
  • grep -v "INFO" server.log: يعكس البحث، ويعرض فقط الأسطر التي لا تحتوي على الكلمة الأساسية المحددة.

أوامر التسلسل: خط الأنابيب |

يتم تمثيل مشغل خط الأنابيب بالشريط العمودي |. يرسل الإخراج القياسي للأمر الموجود على اليسار مباشرةً إلى الإدخال القياسي للأمر الموجود على اليمين:

Bash
[command1] | [command2]

على سبيل المثال، إذا كان ملف السجل ضخمًا وتريد البحث عن كلمة معينة دون طباعة الملف بأكمله، فيمكنك الجمع بين cat وgrep:

Bash
cat logs/server.log | grep ERROR

يؤدي هذا إلى قراءة الملف server.log بالكامل مع cat، ولكن بدلاً من طباعته على الشاشة، فإنه ينقل الدفق إلى grep، الذي يقوم بتصفية وعرض الأسطر التي تحتوي على الكلمة "ERROR" فقط.


أمثلة الاستخدام والأخطاء الشائعة

إذا كنت تبحث عن كلمة صغيرة (مثل "post") في ملف يحتوي عليها بأحرف كبيرة فقط (مثل "POST")، فلن يُرجع grep أي شيء:

Bash
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)

للعثور على السطر بغض النظر عن حالته، استخدم العلامة -i:

Bash
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 بإرجاع خطأ:

Bash
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directory

جربه بنفسك

التمرين 1: البحث عن الأخطاء في ملفات السجل

تمرين#linux.m3.l2.e1
المحاولات: 0جارٍ التحميل…

قم بتصفية الملف "logs/server.log" لاستخراج وعرض الأسطر التي تحتوي على الكلمة "ERROR" فقط (حساسة لحالة الأحرف).

جارٍ تحميل المحرر…
إظهار التلميح

استخدم الأمر grep متبوعًا بالكلمة التي تبحث عنها ومسار الملف.

الحل متاح بعد 3 من المحاولات

التمرين 2: خطوط الأنابيب والمرشحات

تمرين#linux.m3.l2.e2
المحاولات: 0جارٍ التحميل…

استخدم الأمر cat لقراءة الملف "logs/server.log" وتوجيه مخرجاته (|) إلى الأمر grep لتصفية وطباعة الأسطر التي تحتوي على الكلمة "WARNING" فقط.

جارٍ تحميل المحرر…
إظهار التلميح

قم بتوصيل cat logs/server.log بـ grep تحذير باستخدام الأنبوب '|' شخصية.

الحل متاح بعد 3 من المحاولات

التمرين 3: بحث غير حساس لحالة الأحرف

تمرين#linux.m3.l2.e3
المحاولات: 0جارٍ التحميل…

ابحث عن جميع الأسطر التي تحتوي على كلمة "post" (سواء كانت كبيرة أو صغيرة) في ملف "logs/access.log" باستخدام علامة grep المناسبة.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم grep مع الخيار -i لتجاهل حساسية حالة الأحرف.

الحل متاح بعد 3 من المحاولات