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



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

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

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

نوع المُحتوى


التصنيفات

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

التصنيفات

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

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 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. مقدمة مازال برنامج "!Hello, World" التقليدي يتمتّع بالاحترام في عالم لغات البرمجة، كونه برنامج بسيط وكامل للمبتدئين، ويسمح بالتأكّد من أن البيئية البرمجية معدة بشكل صحيح. سيتم في هذه المقالة شرح كيفية بناء هذا البرنامج باستخدام لغة البرمجة Ruby، لكن لجعل هذا البرنامج أكثر إمتاعًا سيتم تعديل برنامج "!Hello, World" التقليدي ليقوم بطلب اسم المستخدم ليتم عرضه في رسالة الترحيب، أي سيكون الشكل النهائي للبرنامج كما يلي: Please enter your name. Thaer Hello, Thaer! I'm Ruby! لكن قبل البدء يجب أن تكون بيئة التطوير البرمجية المحلية للغة Ruby منصبة على الحاسب. الخطوة الأولى- كتابة برنامج “Hello, World!” التقليدي لكتابة أي برنامج Ruby يجب في البداية فتح أي محرر نصوص مثل محرر سطر الأوامر nano ثم القيام بإنشاء ملف Ruby جديد كما يلي: $ nano hello.rb حيث قمنا بتسمية هذا الملف hello.rb لأننا سنقوم بكتابة كود برنامج "!Hello, World" التقليدي ضمنه. وحالما يقوم المحرر بفتح هذا الملف ضمن نافذة موجه أوامر نظام التشغيل، سنقوم بكتابة كود Ruby الخاص ببرنامج "!Hello, World" التقليدي ضمن هذا الملف كما يلي: puts "Hello, World!" تستخدم الدالة puts من أجل طباعة النصوص على الشاشة، حيث تقوم بطباعة السلسلة النصية string التي تأتي بعدها (في حالتنا هنا "!Hello, World"), والسلسلة النصية هي عبارة عن مجموعة من المحارف المحصورة ضمن علامتي تنصيص " ". إن الدالة puts هي من الدوال الموجودة ضمن لغة البرمجة Ruby بشكل افتراضي، كما ويمكن للمستخدم أن يقوم بإنشاء دواله الخاصة لتأدية وظائف معينة. والآن سنقوم بحفظ البرنامج وإنهاء المحرر nano وذلك بالضغط على المفاتيح CONTROL و X ثم ضغط المفتاح y (نعم) عند سؤال المحرر عن الرغبة بحفظ التعديلات على الملف. الخطوة الثانية- تشغيل برنامج Ruby بعد أن تم الانتهاء من كتابة برنامج "!Hello, World" بلغة Ruby أصبح بالإمكان تشغيله وتجربته عن طريق إدخال الأمر ruby متبوعا باسم ملف البرنامج hello.rb ضمن موجه أوامر نظام التشغيل كما يلي: $ ruby hello.rb ثم نضغط مفتاح الإدخال ENTER فتظهر نتيجة تنفيذ البرنامج كما يلي: Hello, World! حيث يقوم الأمر ruby بتشغيل مترجم تعليمات لغة البرمجة Ruby والذي يقوم بدوره بقراءة الملف الذي تم تحديد بعد الأمر (في حالتنا هنا الملف hello.rb)، ثم يقوم هذا المترجم بتنفيذ تعليمات لغة Ruby الواردة فيه وإظهار نتيجة التنفيذ على الشاشة. ففي مثالنا يقوم المترجم بتنفيذ التعليمة "!puts "Hello, World كما يلي: يتم استدعاء الدالة puts ومن ثم تمرير السلسلة النصية "!Hello, World" إليها, حيث تسمى هذه السلسلة النصية بالمعامل لأنه تم تمريرها إلى الدالة، ثم تُنفذ الدالة puts لتقوم بطباعة السلسلة النصية الممررة إليها على الشاشة، طبعًا لا يتم طباعة علامتي التنصيص على الشاشة لأنها تستخدم فقط لتحديد محتويات السلسلة النصية. نلاحظ أن البرنامج يعمل لكن سنقوم بتعديله ليصبح تفاعليًا، لنرى كيف يتم ذلك. الخطوة الثالثة- جعل البرنامج تفاعليًا إن البرنامج السابق يعطي نفس الخرج في كل مرة يتم تشغيله فيها، لذا سنقوم بتعديله ليصبح تفاعليًا من خلال طلبه لاسم المستخدم ليقوم بعرضه ضمن رسالة الترحيب، أي أن خرج البرنامج سيتغيّر بتغيّر الاسم المدخل. بدل أن نقوم بتعديل البرنامج السابق سنقوم بإنشاء برنامج جديد ضمن الملف greeting.rb باستخدام المحرر nano كما يلي: $ nano greeting.rb وحالما يقوم المحرر بفتح هذا الملف، سنقوم بإضافة سطر كود Ruby الذي يقوم بطلب اسم المستخدم: puts "Please enter your name." نلاحظ أنه تم استخدام الدالة puts من جديد من أجل طباعة نص طلب إدخال الاسم على الشاشة. ثم نقوم بإضافة سطر آخر لاستقبال الاسم المدخل من قبل المستخدم وتخزينه: puts "Please enter your name." name = gets حيث تم استخدام الدالة gets التي تقوم باستقبال الدخل من لوحة المفاتيح، حيث يتم إيقاف البرنامج بشكل مؤقت ريثما ينتهي المستخدم من إدخال المحارف من لوحة المفاتيح بضغطه على المفتاح ENTER، عندها يتم تحويل جميع المحارف المدخلة بما فيها ENTER إلى سلسلة نصيّة. وبما أننا نريد استخدام هذه السلسلة النصيّة فيما بعد ضمن برنامجنا لذا قمنا بحفظها عن طريق إسنادها للمتغير name، حيث يحتفظ البرنامج بهذه السلسلة النصية في مكان ما من ذاكرة الحاسب والمعنونة باسم المتغيّر الذي أسندت له حتى الانتهاء من تنفيذ البرنامج. نقوم الآن بإضافة آخر سطر للبرنامج والذي يقوم بطباعة رسالة الترحيب المتضمنة على اسم المستخدم: puts "Please enter your name." name = gets puts "Hi, #{name}! I'm Ruby!" نلاحظ أنه تم استخدام الدالة puts من جديد لكن في هذه المرة مع أداة إدراج السلاسل النصية { }# وهي من أدوات لغة Ruby والتي تسمح بإدراج السلسلة النصيّة المحفوظة في متغير ما ضمن سلسلة نصيّة أخرى، حيث يتم إظهار القيمة المحفوظة في المتغير الموجود بين القوسين بدل اسمه (في حالتنا هنا القيمة المسندة للمتغير name). والآن بعد الانتهاء من كتابة البرنامج الجديد سنقوم بحفظه وإنهاء المحرر nano وذلك بالضغط على المفاتيح CONTROL و X ثم ضغط المفتاح y. سنقوم بتشغيل البرنامج الجديد واختباره كما يلي: $ ruby greeting.rb ثم نضغط مفتاح الإدخال ENTER فتظهر نتيجة تنفيذ البرنامج كما يلي: Please enter your name. Thaer Hi, Thaer ! I'm Ruby! نلاحظ أن خرج البرنامج ليس كما توقعناه حيث كنا نتوقع ظهور العبارة !Hi, Thaer! I’m Ruby وذلك بسب احتواء المتغير name على المحرف ENTER في نهاية السلسلة النصيّة المحفوظة، حيث يتم إظهار هذا المحرف على شكل إضافة سطر جديد، لذا يجب إزالة هذا المحرف من السلسلة النصيّة المحفوظ في المتغير name. يمكن تحقيق ذلك عن طريق تعديل السطر الثاني من البرنامج بعد فتح ملفه greeting.rb بالمحرر nano ليصبح كما يلي: puts "Please enter your name." name = gets.chop puts "Hi, #{name}! I'm Ruby!" حيث باستخدام الدالة chop مع الدالة puts لتقوم بإزالة أخر محرف من السلسلة النصيّة التي قامت الدالة باستقبالها من لوحة المفاتيح، وهكذا يتم حفظ جميع المحارف المدخلة من لوحة المفاتيح في المتغيّر name إلا المحرف ENTER. نحفظ التعديل الجديد على البرنامج وننهي المحرر nano وذلك بالضغط على المفاتيح CONTROL و X ثم ضغط المفتاح y, ثم نعيد تشغيل البرنامج من جديد: $ ruby greeting.rb ثم نضغط مفتاح الإدخال ENTER فتظهر نتيجة تنفيذ البرنامج التي كنا نريدها: Please enter your name. Thaer Hi, Thaer! I'm Ruby! وهكذا تم إنجاز برنامج مكتوب بلغة البرمجة Ruby يستقبل الدخل من المستخدم ويعالجه ثم يعرضه على الشاشة. ملخص تم في هذه المقالة تعلم كيفية كتابة برنامج Ruby بسيط يقوم باستقبال الدخل من لوحة المفاتيح ثم يعالجه ثم يعيد إظهاره على الشاشة. يمكن الآن وبعد تعلم بعض أساسيات البرمجية بلغة Ruby توسيع المهارات البرمجية بهذه اللغة عن طريق تطوير البرنامج الذي تم إنشائه في هذه المقالة ليحوي على وظائف جديدة. ترجمة المقال How To Write Your First Ruby Program لصاحبه Brian Hogan
  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.