Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

الفرق الحقيقي بين grep وripgrep وأيهما الأفضل للبحث في الملفات

grep؟ ripgrep؟ The Silver Searcher؟ ما هي أفضل أداة للبحث عن النصوص في الملفات؟

يواجه المبرمجون ومستخدمو الأنظمة يوميًا مهمة البحث داخل مئات أو آلاف الملفات النصية. هنا تظهر أدوات مثل grep وripgrep وThe Silver Searcher كحلول فعّالة، لكن أي منها يقدم الأداء الأفضل؟

52849124270_37375d86a3_o الفرق الحقيقي بين grep وripgrep وأيهما الأفضل للبحث في الملفات
رغم أن grep هو الأداة الكلاسيكية التي يعتمد عليها الجميع منذ عقود، إلا أن البدائل الحديثة مثل ripgrep وThe Silver Searcher قدّمت تحسينات كبيرة في السرعة والدقة وسهولة الاستخدام.
في هذا المقال سنستعرض الاختلافات الحقيقية بينها، ونقارن الأداء والميزات لتحديد الأداة التي تستحق أن تكون خيارك الأساسي للبحث داخل الملفات.

grep هي الأداة المُستخدمة للبحث عن ملفات النصوص الكاملة عبر سطر الأوامر. ولكن تتوفر بدائل أخرى، مثل ripgrep وag وsift. ولكن هل يُنصح بالتغيير؟ وإذا كان الأمر كذلك، فأي أداة بحث تُفضّلها؟ لنكتشف ذلك.

كيف يعمل grep؟

يُعد grep أحد أكثر أدوات لينكس فائدةً، وهو كذلك منذ نصف قرن. يرمز اسمه إلى Global Regular Expression Print (طباعة التعابير العادية العالمية)، ولكنه في الحقيقة مُشتق من أمر ed قديم: g/re/p. هذا الأمر بارع في البحث عن النصوص، وخاصةً باستخدام لغة التعابير العادية القوية.

يمكنك البدء ببساطة، ببحث نصي بسيط:

grep 'TODO' journal.md

وفي النهاية، ستتمكن من إنشاء مطابقات أنماط معقدة:

grep -E "^([0-9]{4})-([0-9]{2})-([0-9]{2})" dates.txt

يوضح هذا المثال قوة grep الهائلة: فهو يستخدم تعبيرات عادية موسعة لمطابقة الأسطر التي تبدأ بتاريخ ISO بسيط، مثل 2025-10-26. يمكنك أيضًا استخدام grep في خطوط الأنابيب لديك، لتحقيق نتائج رائعة. على سبيل المثال، سيُخرج هذا الأمر الأسطر من سجل Apache، فورًا، إذا أرسل الخادم حالة “غير مُعدّل”:

tail -f /var/log/apache2/access_log | grep '" 304'

وميزة أخيرة رائعة في grep: البحث التكراري. سيؤدي تشغيل الأمر grep -r pattern إلى البحث في جميع الملفات داخل مجلدك الحالي وما يليه، مع عرض كل نتيجة مطابقة. هذا يجعل grep أداة مثالية للعثور على الملفات التي تحتوي على أي نمط نصي تحتاج إلى البحث عنه.

grep -ri todo

ما الذي يُميز ripgrep؟

يُعدّ grep برنامجًا واسع الانتشار، وربما أكثر من أي برنامج آخر، في إظهار قوة يونكس: برامج مُركّزة، تعمل بشكل تعاوني، وتتواصل عبر نقل البيانات النصية. فلماذا إذًا تبحث عن برنامج آخر؟

اقرأ أيضا:  تطور محطات Unix: من التليتايب إلى النوافذ الحديثة

يُعد ripgrep بديلًا شائعًا وحديثًا لـ grep، وهو من أفضل الترقيات لأوامر افتراضية يُمكنك إنشاؤها. يُمكنك تثبيته باستخدام مجموعة واسعة من برامج إدارة الحزم، باستخدام أوامر مثل brew install ripgrep، أو sudo apt-get install ripgrep، أو sudo dnf install ripgrep، أو الأمر المُناسب لنظامك. بعد التثبيت، ستُشغّله كـ rg (وليس ripgrep)، باستخدام نهج مُشابه لـ grep. على سبيل المثال، للعثور على جميع العناوين في ملف Markdown:

rg '^#' README.md

وصل الإصدار الأقدم من ripgrep في عام 2016 واستفاد من لغة البرمجة Rust الجديدة نسبيًا. بشكل عام، بفضل بعض التحسينات الممتازة لمحرك التعبيرات النمطية في Rust، يُعد ripgrep أسرع من البدائل، وخاصةً grep، الذي قد يكون أبطأ بعشر مرات.

قد لا تلاحظ هذه الميزة في السرعة مع الاستخدام اليومي. ولكن إذا كنت تُجري عمليات بحث طويلة الأمد – وخاصةً عمليات البحث التكرارية، عبر العديد من الملفات، وبأنماط أكثر تعقيدًا – يُمكن لـ ripgrep تقديم فوائد كبيرة. البحث التكراري هو الإعداد الافتراضي لـ ripgrep، لدرجة أن الأمر التالي يكفي للبحث عن نمط في جميع الملفات داخل المجلد الحالي وأسفله:

rg PATTERN

لإجراء اختبار تقريبي، أجريتُ اختبارًا بسيطًا (غير دقيق) باستخدام مجلد يحتوي على حوالي 40,000 ملف. استغرق أمر grep 30 ثانية لإكماله، بينما استغرق أمر ripgrep أقل من ثانية واحدة بقليل. ستختلف هذه النتائج بلا شك بناءً على عدة عوامل، لكن أداء ripgrep أفضل بالتأكيد في استخدامي اليومي.

linux-grep-versus-ripgrep الفرق الحقيقي بين grep وripgrep وأيهما الأفضل للبحث في الملفات

نصيحة
من أسباب سرعة ripgrep نموذجه متعدد الخيوط، الذي يُجري بحثًا متكررًا بالتوازي. ومن الآثار الجانبية المثيرة للاهتمام أنك (على الأرجح) سترى النتائج بترتيب مختلف في كل مرة تُجري فيها البحث نفسه. إذا واجهتَ مشكلة، فاستخدم خيار –sort path.

لكن مزايا ripgrep تتجاوز مجرد السرعة؛ فالبرنامج يتمتع بمجموعة واسعة من الميزات. من أبسطها دعمه لمجموعة من خيارات التصفية الخاصة بلغة معينة، مثل:

rg --type sh 'todo'

سيؤدي هذا إلى إجراء بحث متكرر من الدليل الحالي، مع البحث فقط في نصوص shell عن نمط “todo”. تدعم الأداة قائمة واسعة من أنواع الملفات، والتي يمكنك عرضها باستخدام خيار –type-list:

اقرأ أيضا:  استخدام tldr لتعلم أوامر Linux بسهولة

linux-ripgrep-type-list-2 الفرق الحقيقي بين grep وripgrep وأيهما الأفضل للبحث في الملفات

نصيحة
أمر ripgrep متكرر بطبيعته، ولكن حتى هذا السلوك يمكن التحكم فيه باستخدام خيار –max-depth. ما عليك سوى تشغيل الأمر rg –max-depth 1 PATTERN، وسيُحاكي بحثك بحث grep أساسيًا، يقتصر على الملفات الموجودة في مجلدك الحالي.

تماشيًا مع العديد من البرامج الحديثة، يدعم ripgrep git بمعنى أنه يقرأ ملف .gitignore ويتجاهل الملفات نفسها. يحدث هذا فقط في الوضع المتكرر، وهناك العديد من خيارات التكوين التي تتيح لك تعديل هذه الوظيفة.

يتميز ripgrep بميزات إضافية عديدة. يمكنه تخطي الملفات التي يزيد حجمها عن حجم معين (–max-filesize)، وعرض معلومات موجزة (–stats)، واستخدام البحث الذكي عن حالة الأحرف (بناءً على حالة الأحرف في النمط)، والبحث داخل ملفات gzip.

ما هي أدوات البحث الأخرى في الطرفية؟
على الرغم من أن grep هو أداة البحث الافتراضية، وripgrep هو البديل الأكثر شيوعًا، إلا أن هناك بعض البرامج الأخرى التي تستحق التجربة.

أداة ack

أداة مشابهة، متوافقة في الغالب مع grep، مكتوبة بلغة بيرل. وهي أيضًا تعمل بشكل متكرر افتراضيًا، مما يُسهّل استخدامها. كما أنها تعمل بشكل مشابه لأداة ripgrep، حيث تفحص الملفات التي تتعرف عليها – حسب نوعها – وتتجاهل الملفات الأخرى. مع ذلك، لا يشمل هذا الملفات التي تُطابقها ملفات .gitignore، مع أن ack سيتجاهل أي مجلدات .git.

تحتوي أداة ack على خيار -f مميز يطبع مسارات جميع الملفات التي تبحث عنها، دون البحث عنها فعليًا. قد لا يبدو هذا مفيدًا، ولكن يمكنك الاستفادة من ميزات ack الأخرى، واستخدامه لطباعة قائمة بجميع الملفات (مثل “find .”) أو جميع الملفات من نوع معين. سيعمل هذا الخيار بالتزامن مع .gitignore، لذا فهو طريقة مفيدة للعثور على الملفات داخل مستودع شفرة المصدر.

من تجربتي، ack أسرع من grep، لكنه ليس بسرعة ripgrep.

Silver Surfer

يُشغّل أمر ag برنامجًا يُسمىSilver Surfer، وهو يُعيد صياغة عبارة “Silver Surfer” ويشير إلى الرمز الكيميائي للفضة.

يُعد ag بديلًا ممتازًا لـ ripgrep. ليس بنفس سرعة rg في استخدامي، ولكنه يكاد يكون كذلك. الفرق ليس كبيرًا لدرجة أنك ستلاحظه إلا إذا كنت تُجري اختبارات معيارية أو تُجري عمليات بحث مُعقدة للغاية.

اقرأ أيضا:  أفضل الحيل والنصائح لتجربة ممتعة على Ubuntu للمبتدئين

لكن يُمكن لـ ag القيام بالعديد من الأشياء نفسها التي يُمكن لـ rg القيام بها: فهو يُراعي ملفات .gitignore، ويُطابق الأسطر الجديدة، ويُجري البحث داخل الملفات الثنائية، ويُمكنه طباعة إحصائيات المُلخص.

Sift

Sift هي أداة بحث نصية أخرى، مكتوبة هذه المرة بلغة Go. وهي متكررة افتراضيًا، مع خيار لإيقافها. بينما تُجمّع نتائج rg حسب الملف، فإن sift يطبع المسار الكامل قبل كل مُطابقة. يُضحي هذا النهج بسهولة القراءة البشرية لصالح سهولة القراءة الآلية، لذا قد يكون أسهل افتراضيًا للبرمجة النصية.

مثل ag، يتميز sift بالسرعة، وإن لم يكن بنفس سرعة rg. يعتمد افتراضيًا على البحث في أكبر عدد ممكن من الملفات، بما في ذلك الملفات الثنائية والملفات المذكورة في .gitignore. مع ذلك، يمكنك تجاهل أيٍّ من مجموعتي الملفات باستخدام الخيارين –binary-skip و–git على التوالي.

لا يحتوي Sift على صفحة دليل، وهو ما أعتبره عيبًا، مع أنه يوفر معلومات مفيدة باستخدام الخيار –help.

إذا كنت لا تزال تستخدم grep، فستشعر أن أيًا من هذه الأدوات يُعد ترقية كبيرة. ripgrep هو المفضل لدي شخصيًا لأنه يبدو أنيقًا للغاية، وقائمة ميزاته الطويلة تُمكّن من إجراء أنواع مختلفة من عمليات البحث القوية. سرعته الفائقة، مقارنةً بـ grep، تستحق المشاهدة حتى تُصدق.

من الجيد دائمًا وجود بدائل: من المفترض أن تُؤدي بيئة مفتوحة المصدر ذات منافسة شريفة إلى برامج أفضل بشكل عام. مع ذلك، لا يوجد فرق يُذكر بين هذه الأدوات للاستخدامات العادية، باستثناء اللغات المُبرمجة بها. ريب جريب هو الأسرع (بالكاد) وربما يكون الخيار الأمثل إلا إذا كنت بحاجة إلى خيارات مُحددة للغاية.

الخبر المُطمئن هو أن ريب جريب لا يزال قيد التطوير النشط، وقد صدر مؤخرًا الإصدار 15.0.0 في أكتوبر. لا يزال ack قيد التطوير، ولكن بوتيرة أقل قليلاً، بينما توقف تحديث sift وag تقريبًا.

كل أداة من أدوات البحث الثلاثة تمتلك ما يميزها: grep يظل الخيار الآمن والمضمون، ripgrep يقدم أداءً مذهلاً وسرعة عالية بفضل تقنيات الفهرسة الحديثة، أما The Silver Searcher فيوازن بين السرعة والبساطة.
اختيار الأفضل يعتمد على طبيعة عملك — إذا كنت تحتاج بحثًا سريعًا في مشاريع ضخمة فـ ripgrep هو الخيار المثالي، أما إن كنت تفضل الاعتمادية الكلاسيكية فـ grep ما زال كافيًا.
المهم هو أن تعرف أن مجرد تغيير الأداة قد يوفر لك وقتًا ثمينًا كل يوم.

زر الذهاب إلى الأعلى