المحتوى عن 'grep'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
    • React
  • HTML
    • HTML5
  • CSS
  • SQL
  • لغة C#‎
  • لغة C++‎
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • Sass
    • إطار عمل Bootstrap
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • ASP.NET
    • ASP.NET Core
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
    • منصة Xamarin
  • سهولة الوصول
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 2 نتائج

  1. تشتهر أداة grep بكونها إحدى أدوات البحث الأكثر شهرة في الأنظمة الشبيهة بيونكس Unix-like، سواء تعلّق الأمر بالبحث عن ملفات، سطر أو أسطر عدّة ضمن ملفّ، فهي سريعة وتدعم الكثير من الخيارات مثل: البحث حسب نمط Pattern مكوَّن من سلسلة محارف String والبحث اعتمادًا على تعابير نمطية Regular expressions، بما في ذلك تعابير Perl النمطية Perl reg-ex. تتوفّر grep، نظرا لتعدّد وظائفها، على عدّة تنويعات تشمل rgrep، pgrep،fgrep، egrep وغيرها. توجد اختلافات يسيرة بين هذه التنويعات تجعل المبرمجين يستخدمون كلّ تنويعة لمهامّ محدّدة حسب رغبتهم وتفضيلهم. سنعرض في هذا المقال للاختلفات الأساسية بين التنويعات الثلاثة الأكثر شهرة، وهي egrep، grep وfgrep، ومالمتطلبات التي تجعل مستخدمي لينكس يختارون إحداها بدلا من الأخرى. سنستخدم ملفا بالمحتوى التالي ونسمّيه check_file لتطبيق الأوامر في هذا الدرس عليه. grep is a command that can be used on unix-like systems. it searches for any string in list of strings or file. It is very fast. (f|g)ile ملحوظة: لتوافق نتائج تنفيذ الأوامر لديك النتائج المعروضة في هذا الدرس، يجب أن يكون محتوى الملف مطابقا للمحتوى أعلاه: حالة الأحرف +(كبيرة أو صغيرة) وبداية الأسطر. تأكّد كذلك من تنفيذ الأوامر من المجلّد الذي يوجد به الملف، أو اكتب مسار الملف كاملا. الأمر grep يعدّ أمر grep الأمر الأساسي في الأنظمة الشبيهة بيونكس للبحث عن مجموعة محارف مهما كان نوعها ضمن سلسلة محارف، ملف، مجموعة ملفات أو ربما نتيجة تنفيذ أمر آخر. يستخدم الأمر grep التعابير النمطية القاعدية Basic Regular Expressions, BRE في البحث؛ علاوة على سلاسل المحارف الاعتيادية. تفقد المحارف الوصفية Meta characters عند استخدام التعابير النمطية القاعدية قدرتها التعبيرية، ويُتَعامل معها كأي محرف عادي؛ إلا إذا سُبِقت بمحرف تخليص Escape (وهو المحرف \). نرصُد في ما يلي أهم المحارف الوصفية بالنسبة للأمر grep. +: يعني عند تخليصه أننا نبحث عن السلاسل التي يتكرّر فيها المحرف قبله (على يساره) لمرة واحدة على الأقل. يمكن أن توافق العبارةُ a+b سلاسل المحارف ab، aabcd،aaab وaaaab، إلا أنها لا توافق العبارة bcd. ?: يشير إلى تكرار المحرف الذي قبله لمرة واحدة على الأكثر، حسب طريقة الاستخدام. (: يشير إلى بدء عبارة تناوب Alternation؛ أي موافقة أحد خيارات يفصل بينها الخط العمودي |. ): يشير إلى نهاية عبارة تناوب Alternation. |: يفصل بين الخيارات ضمن عبارة تناوب. يعني التعبير النمطي التالي (a|b)cde “الحرف a أو الحرف b تتبعه الأحرف cde بهذا الترتيب”؛ أي أن العبارتيْن acde وbcde توافقان التعبير النمطي المذكور. {: يشير هذا المحرف إلى بداية محدّدِ مجال. }: يشير هذا المحرف إلى نهاية محدّد مجال. مثلا؛ تعني العبارة التالية a{2} أننا نبحث عن الحرف a مكررا مرتيْن. راجع مقال مقدّمة في التعابير النمطية للمزيد عن هذه الدلالات واستخداماتها. ننفّذ الأمر grep بالطريقتيْن التاليتيْن: grep '(f|g)ile' check_file grep '\(f|g\)ile' check_file نلاحظ الفرق في النتيجة: يبحث الأمر الأول في الملف check_file عن سلسلة المحارف “(f|g)ile” كما كُتِبت دون أن يُفسّر المحارف (، ) و| تفسيرا خاصًّا. ينتُج عن تنفيذ الأمر إظهار الأسطُر التي تحوي سلسلة المحارف المرغوبة، مع عرض السلسلة بلون مغاير؛ حسب الإعدادات (أحمر في حالتي). تبدو النتيجة مغايرة بالنسبة للأمر الثاني الذي وضعنا فيه محرف التخليص \ أمام كل محرف نريد أن يُفسَّر بدلالته الخاصّة (محرف وصفي)، وليس كمحرف متضمَّن في الجملة التي نبحث عنها. تُصبح دلالة التعبير النمطي المُمرَّر إلى grep: “الكلمات التي يوجد بها أحد الحرفيْن f أو g متبوعا بالأحرف ile“. ملحوظة: استخدم الخيار o- إن أردتَ إظهار الكلمة التي تطابق التعبير النمطي لوحدها، دون السطر الذي توجد فيه: grep -o '(f|g)ile' check_file grep -o '\(f|g\)ile' check_file الأمر egrep يشبه اﻷمر egrep الأمرَ grep مع فرق أنه يتعامل مع المحارف الوصفية مباشرةً دون الحاجة لمحرف تخليص؛ بمعنى أنه يأخذها بدلالتها الخاصة مباشرةً. نعيد، لفهم الفكرة جيّدًا، تنفيذَ الأمريْن السابقيْن مع إحلال egrep مكان grep: egrep '(f|g)ile' check_file egrep '\(f|g\)ile' check_file يبدو الأمر هنا معكوسا: بدون تخليص المحارف الوصفية فإن الأمر egrep يحتفظ بدلالتها الخاصّة، فيبحث في الحالة الأولى عن جميع سلاسل المحارف التي تبدأ بحرف f أو g؛ أما في الحالة الثانية فيعدّ المحارف (، ) و| جزءًا من السلسلة ويبحث بالتالي عن العبارة (f|g)ile كما هي. ملحوظة: يشبه تنفيذ الأمر egrep تنفيذَ الأمر grep مع الخيار E-: grep -E '(f|g)ile' check_file grep -E '\(f|g\)ile' check_file يُفضّل كثيرون استخدام egrep بدلا من grep للبحث اعتمادًا على تعابير نمطيّة إذ أنها تزيح عن كاهلهم ضرورة تخليص المحارف الوصفية؛ خصوصا في العبارات النمطية المعقدة. الأمر fgrep لا يتعامل الأمر fgrep مع التعابير النمطية ولا المحارف الخاصّة؛ فالمعطى المُمرَّر له أولا هو سلسلة محارف ينبغي البحث عنها كما هي. يشبه استخدام fgrep استخدام الأمر grep مع فرق أن الأخير سيفسّر المحرف \ على أنه محرف تخليص، بينما لا يتعرف egrep عليه نهائيا؛ فهو بالنسبة له مجرد محرف كالبقية. fgrep '(f|g)ile' check_file fgrep '\(f|g\)ile' check_file تمكن ملاحظة أن fgrep بحث في كلتا الحالتيْن عن سلسلة المحارف كما مُرِّرت إليه. في الحالة الأولى كانت النتيجة مشابهة لتنفيذ الأمر grep بدون تخليص المحارف، وفي الثانية أضفنا محرف التخليص \؛ إلا أن fgrep لا يعدّه محرفا ذا دلالة خاصّة فيبحث عن السلسلة كما كُتبت ولا يجدها في الملف. ملحوظة: يشبه تنفيذ الأمر fgrep تنفيذَ الأمر grep مع الخيار F-: grep -F '(f|g)ile' check_file grep -F '\(f|g\)ile' check_file تعرّفنا في هذا الدرس على الفروق الأساسيّة بين ثلاث تنويعات من الأمر grep شائع الاستخدام في البحث عن سلاسل المحارف. يمكنك اختيار التنويعة التي تناسبك حسب الحاجة. ترجمة بتصرف لمقال What’s Difference Between Grep, Egrep and Fgrep in Linux? لصاحبه Gunjit Khera.
  2. يعدّ التعامل مع الملفات النصيّة من المهامّ المتكرّرة التي على مدير النّظُم تنفيذها. تشمل هذه المهمّة التّعديل على الملفّات الموجودة (ملفات إعداد غالبا) أو إنشاء ملفّات جديدة. سنقدّم في هذا الدّرس البرنامجيْن الأكثر استخداما لتحرير الملفات النصيّة على RHEL (وتوزيعات لينكس عموما)؛ وهما Nano و Vim. يشتهر Nano بسهولة استخدامه، خصوصا بالنسبة للمبتدئين؛ فيما يتميّز Vim بإضافاته الفعّالة التي تجعل منه أكثر من مجرّد محرّر نصوص. لن ندخل في شرح المحرّر الذي يجب عليك اختيّاره؛ جرّب ثم اختر ما يناسبك. استخدام Nano لتحرير الملفات النصية يُستخدَم أمر nano لبدء تشغيل محرّر النصوص Nano. يمكن فتح ملفّ بتمرير مساره إلى الأمر؛ سيظهر محتوى الملفّ في هذا الحالة داخل المحرّر. إن لم يكن الملفّ موجودا فسيُنشئ المحرّر ملفا فارغا بنفس الاسم ويفتحه إلا أنه لن يُخزَّن إلا إذا طلبت ذلك من المحرّر (سنرى كيف في ما بعد). إن استُخدِم الأمر دون معطيات فسيظهر المحرّر بمحتوى فارغ. يظهر في أعلى المحرّر إلى اليسار رقم الإصدار وفي الوسط اسم الملفّ المفتوح أو صوان Buffer جديد (تخزين مؤقّت) إن نُفِّذ الأمر دون تمرير معطى. ثم تأتي منطقة تحرير النّص (بيضاء في الصّورة) وفي الأسفل أدوات للتحكّم. تظهر أدوات التحكّم على هيئة حرف تسبقه علامة ^ التي تشير إلى زرّ Ctrl في لوحة المفاتيح؛ أي أنه يجب الضّغط على زرّ Ctrl والحرف المشار إليه من أجل استعمال أداة التحكّم. أهم أدوات التحكم هي التالية: Ctrl+G: تظهر صفحة المساعدة. Ctrl+X: تخرُج من المحرّر. Ctrl+O: تخزّن محتوى الملفّ. Ctrl+J: تسويّة محاذاة النّص. Ctrl+R: إدراج محتوى ملفّ بذكر مساره الكامل (المُطلَق) في الملفّ الحالي. Ctrl+W: البحث داخل الملفّ. Ctrl + K: يقصّ السطر الحالي. Ctrl + U: يُلصق المحتوى المقصوص. Ctrl + C: يُظهر وضعيّة المؤشر (السطر والعمود). إن طلبت من المحرّر عملية مثل الحفظ وأردت إلغاءها يمكن أيضا استخدام هذا الاختصار. يُستخدم الاختصاران Ctrl+F و Ctrl+B على التوالي لتقديم المؤشّر أو إرجاعه بحرف. يُستخدم الاختصاران Ctrl+P و Ctrl+N على التوالي للانتقال إلى الأعلى أو الأسفل؛ سطرا في كل مرة. يُستخدم الاختصاران Ctrl+space وAlt+space على التوالي لتقديم المؤشّر أو إرجاعه بكلمة. Ctrl + _: الانتقال إلى سطر وعمود تحدّدهما بالصّيغة X,Y حيث X رقم السّطر وY رقم العمود. استخدام Vim لتحرير الملفات النصية محرّر Vim هو نسخة محسَّنة من محرّر Vi؛ وهو محرّر نصوص مشهور الأنظمة الشبيهة بيونكس. يتميّز محرّر Vim بعمله حسب أوضاع Modes مختلفة: وضع الأوامر: يُستخدَم لتصفّح الملف وتنفيذ أوامر عليه. تتكوّن الأوامر من حرف أو أكثر وهي حسّاسة لحالة الأحرف Case-sensitive. إن أردت إعادة تنفيذ أحد الأوامر عدّة مرات فيمكنك كتابة عدد المرات قبله (توجد بضعة استثناءات لهذه القاعدة). مثلا؛ ينسخ الأمرُ yy (أو Y) كامل السّطر الحالي وعند كتابة العدد 4 أمامه كالتالي 4yy (أو 4Y) فإنه ينسخ السّطر الحالي إضافة للأسطر الثلاثة الموالية (4 أسطر في المجموع). وضع ex: يمكن في هذا الوضع تطبيق أوامر محرّر ex (محرّر نصوص يعمل على أنظمة يونكس) لتنفيذ عمليّات مثل حفظ الملفّ الحالي أو تنفيذ برنامج أو أمر خارجي. اضغط على زر Exc ثم أدخل نقطتين عموديّتيْن : إن أردت الوصول إلى وضع ex من وضع الأوامر؛ ثم اكتب بعدهما أمر ex الذي تودّ تنفيذه. وضع الإدخال : يُستخدم زر i للانتقال من وضع الأوامر إلى وضع الإدخال (كتابة نصّ). ينتج عن الضّغط على أزرار في لوحة المفاتيح أثناء وضع الإدخال ظهور النّص في المحرّر. تمكن دائما العودة إلى وضع الأوامر، مهما كان الوضع الذي توجد فيه، بالضّغط على زرّ Esc. نشغّل محرّر النصوص Vim بتنفيذ الأمر vim في سطر الأوامر. يكون المحرّر عند بدء تشغيله على وضع الأوامر. ننفّذ الأمر help: للحصول على المساعدة (لا تنس الضغط على زر Enter بعد كتابة الأمر ليُنفَّذ). يبدو المحرّر كالتالي بعد تنفيذ الأمر السابق. تُقدّم صفحة المساعدة في الأعلى فهرسا بمحتوياتها على هيئة مقاطع مخصّصة حسب المواضيع. انتقل إلى الموضوع الذي ترغب في عرض معلومات عنه باستخدام الأسهم على لوحة المفاتيح ثم عند الوصول إلى اسم الموضوع في الفهرس اضغط على الزّريْن [+Ctrl لعرض محتويات المقطع المخصَّص للموضوع. يظهر في أسفل الشاشة اسم الملفّ الحالي. إن أردت إغلاق الملف دون حفظ التعديلات نفّذ الأمر التالي: :q! يُستخدَم نفس الأمر أيضا للخروج من صفحة المساعدة. استخدم أحد الأوامر التاليّة لحفظ التعديلات على ملفّ: :wq! :x! ZZ لاحظ ألا وجود للنقطتيْن في الأمر الأخير (ZZ). استخدم الأمر Ndd أثناء وضع الأوامر لقصّ عدد N من الأسطر، ابتداءً من السّطر الحالي. استخدم الأمر Myy أثناء وضع الأوامر لنسخ عدد M من الأسطر، ابتداءً من السّطر الحالي. استخدم الأمر p للصق الأسطُر التي نسختها أو قصصتها سابقا. يُستخدَم الأمر r: إن أردت إدراج محتوى ملف في الملفّ الحالي. إن أردنا مثلا إدراج محتوى الملف etc/fstab/ في الملف الحالي ننفّذ الأمر كالتالي: :r /etc/fstab يمكن أيضا إدراج نتيجة تنفيذ أمر من أوامر النّظام كالتالي: :r! command مثلا؛ لإضافة التاريخ والوقت في مكان المؤشّر نكتب: :r! date تابع درس أساسيّات Vim للمزيد حول الموضوع. استخدام أمر grep والتعابير النمطية Regular expressions يعد البحث في الملفات النصيّة من الأمور الاعتياديّة لأي مدير أنظمة. يكثُر استخدام أمر grep مع التعابير النمطيّة لهذا الغرض. التعابير النمطيّة (تُعرَف بـ regexأو regexp) هي طريقة للتعرّف على سلسلة محارف تتبع نمطا (صيغة أو هيئة) تُحدَّد بعبارة. سنعرض في ما يلي لأمثلة قاعديّة في التعامل مع التعابير النمطيّة؛ راجع مقال مقدمة في التعابير النمطية لتفاصيل أكثر. نفرض مثلا أنك تريد التأكد من دعم معالجك للحوسبة الافتراضيّة Virtualization. يعني وجود سلسلة المحارف svmأو vmx في الملفّ proc/cpuinfo/ أن المعالج يدعم التقنيّة المذكورة. نستخدم أمر grep كما يلي للبحث في الملف: $ grep -i 'svm\|vmx' /proc/cpuinfo تُستخدم العصى العموديّة | (تشير إلى العامل أو Or) للبحث عن توجد إحدى العبارتين svm أو vmx. يجب تخليص Escape العامل بـ\ وإلا فإن أمر grep سيتعامل معه كمحرف عادي لا دلالة له وليس بوصفه عاملا. يطلُب الخيار i- من الأمر ألا يعتدّ بحالة الأحرف (كبيرة أو صغيرة). يمكن باستخدام الخيّار E- تجاوز الحاجة لتخليص العوامل؛ ما يجعل الأمر يفسّرها مباشرة؛ يُكتَب الأمر السابق مثلا: $ grep -Ei 'svm|vmx' /proc/cpuinfo يمكن أن يكون التعبير النمطي عبارة عن مجال من خيارات توضَع بين معكوفين مربعين []. يُقرأ التعبير النمطي c[aeiou]t مثلا: حرف c، يتبعه واحد من الأحرف التالية aeiou ثم حرف t. تُطابق الكلمات التاليّة هذا التعبير النمطي: cat، cet، cot، cit وcut. يمكن أيضا وضع مجال من الأحرف أو الأرقام بين المعكوفين؛ على سبيل المثال [a-z] و[0-9] يوافقان على التوالي أي حرف أبجدية لاتيني صغير Lowercase والأرقام من 0 إلى 9. إن أردنا الإشارة إلى أن الحرف يمكن أن يتكرّر نضع عدد مرات التكرار بين معكوفين {X} بعد العبارة. يستخرج الأمر التالي معرّف جهاز التخزين من الملفّ etc/fstab/: $ grep -Ei '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o /etc/fstab نأخذ الجزء الأول من العبارة: [0-9a-f]{8}- بمكن فهم الجزء كالتالي: لدينا ثماني خانات تتبعها خانة تاسعة توجد بها عارضة -. بالنسبة للخانات الثمانيّة فقيمة كل واحدة يمكن أن تكون إما رقما من بين الأرقام 0 إلى9 أو حرفا من بين الأحرف a إلى f. ينطبق نفس المبدأ على بقيّة أجزاء العبارة. يشير العدد بين معكوفين بعد الأقواس إلى أن عدد مرات تكرار الجزء الموجود بينها. في المحصّلة: يمكن تقسيم العبارة إلى ثلاثة أجزاء: [0-9a-f]{8}- ([0-9a-f]{4}-){3} [0-9a-f]{12} يتشابه الجزء الأول والأخير (الثالث) مع فرق ألا وجود لعارضة في الجزء الأخير وكونه مكونا من 12 محرفا؛ بدلا من 8 قبل العارضة في الجزء الأول. أما الجزء الثاني فهو مكوّن من ثلاثة أجزاء؛ وتمكن إعادة كتابته كالتالي: [0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}- يطلُب الخيار o- من الأمر طباعة جزء الملف المطابق للعبارة دون غيره. الأنماط المعرَّفة مسبقا توجد تعابير نمطيّة معرّفة مسبقا؛ وفي ما يلي أهمها: النمط المعنى [[:alnum:]] جميع الحروف اللاتينية (الصغيرة والكبيرة) إضافة للأرقام من 0 إلى 9 [[:alpha:]] أي حرف لاتيني، صغيرا كان أم كبيرا [[:blank:]] مسافة أو علامة الجدولة Tabulation [[:digit:]] أي رقم من 0 إلى 9 [[:lower:]] أي حرف لاتيني صغير [[:space:]] مساحة [[:punct:]] علامات التنقيط [[:upper:]] أي حرف لاتيني كبير [:word:] جميع الأحرف اللاتينية، الأرقام من 0 إلى 9 أو عارضة سفليّة _ Underscore يطبع الأمر التالي جميع أسطر الملفّ etc/passwd/التي تحوي سلسلة من أربعة أرقام: $ grep -Ei [[:digit:]]{4} /etc/passwd ترجمة -وبتصرّف- للمقال RHCSA Series: Editing Text Files with Nano and Vim / Analyzing text with grep and regexps – Part 4 لصاحبه Gabriel Cánepa.