درسنا اليوم عن أمر من أهم وأشهر الأوامر المستخدمه في الـيونكس وهو الأمر grep قد يعارض البعض كلمة ( أشهر ) لكنه بالفعل فبمجرد تعلمك للأمر سيصبح امرك المفضل دائما والأكثر استخداما غالبا ...
والامر مأخوذ من 'global regular expression printer'
بمعنى ان الامر يستخدم لاستخراج او البحث عن كلمة او حرف او رقم معين من ملف معين
حيث تطلب من الامر البحث عن شئ معين خلال هذا الملف او المجلد كما سنرى على طريقتين اما بطريقة بسيطة او بطريقة مركبة ( pipes ) ..
----------------- معنى : pipes ---------------
طبعا معناه الحرفي حتى اقرب المعنى المقصود للجميع ( ماسورة او قصبة .. الخ )
بمعنى اننا سندخل شئ معين من مدخل و سنحصل على نتائج المدخل من المخرج الاخر ...
بمعنى نستخدم سطر يحتوي على أكثر من أمر ونربط بين كل أمر والاخر برمز | الذي يعني pipe بحيث ناتج الامر الأول سيمرر للامر الثاني كمدخل وناتجه سيمرر للامر الثالث كمدخل وهكذا حتى تنتهي السلسة ونحصل على الناتج .
مثال :
ls | grep 'pic'
طبعا اقرأوا المثال من اليسار لليمين بالمفكرة حتى يتضح أكثر فلقد قمنا بطلب عرض قائمة بمحتويات مجلد معين بامر ls ومن ثم الناتج سيمرر عن طريق pipe للامر الاخر grep والذي سياخذ الناتج وسيبحث فيه عن اي ملف او مجلد يحتوي الكلمة pic ومن ثم سيكون ناتجنا عبارة عن الملفات او المجلدات التي تحتوي مسمياتها على pic .
وهذا مثال اخر :
ls | grep 'pic' | sort -r
نفس السابق الا أننا أضفنا طلب لترتيب الناتج الممرر عن طريق grep
----------------------- أتمنى ان تكون فكرة عمل pipe قد اتضحت الان -----------------------
ذكرت سابقا ان grep تعمل بطريقتين طريقة مبسطة وطريقة مركبه كما وضحناها مع الـ pipes ..
استخدام grep بالطريقة المبسطة :
بعض الـ options المستخدمة مع الامر grep
l - v - w - r
وسأوضحها بالامثله :
grep '10' /home/account/public_html/log.txt
هنا طلبنا البحث واستخراج جميع الأسطر التي تحتوي على الرقم 10 من الملف النصي السابق
---------------------------------
grep -v '10' /home/account/public_html/log.txt
وهنا طلبنا استخراج جميع المحتويات ما عدا الاسطر التي تحتوي على الرقم 10 اي عكس الامر السابق
وهذا معنى -v
---------------------------------
grep -l 'bash' /code/*.c
هنا طلبنا بواسطة الاوبشن -l اعطاء ( أسماء ) الملفات فقط التي تحتوي على الكلمة bash من الملفات الموجودة في المجلد code .
---------------------------------
grep -w '\<pic' *
اقرأوا المثال بالمفكرة من اليسار لليمين
وللبحث عن كلمة معينه نستخدم الاوبشن -w وبامكاننا تحديد جزء من الكلمة ليبحث لنا عن جميع الكلمات التي تبدأ بالاحرف pic واذا اردنا العكس بمعنى ان يكون البحث عن جميع الكلمات التي اخر ثلاثة احرف منها هيا pic فان الصيغه ستضبح :
grep -w 'pic\>' *
--------------------------------
استخدام grep بالطريقة المركبه:
وقد وضحت مفهومها في شرحي لمعنى الـ pipes
ولمزيد من التوضبح سأذكر بعض الامثله :
ls -l | grep rwxrwxrwx
اي استعرض لنا صلاحيات المجلدات الموجودة وأعطني ناتج المجلدات التي تحتوي على التصريح 777 من بينها فقط
-------------------------------
grep -v '^[0-9]' /xxxx/log.txt | more
معناها ابحث لي عن جميع الاسطر التي لا تحتوي بداياتها على احد الارقام من 0-9 والعلامة ^ تعني باول السطر ..
طبعا وبالاخير نطلب منه استعارضها بواسطة more ان كنت تتوقع ان النواتج ستكون أكثر من صفحة واحدة ليسهل استعراضها ..
طبعا الأمثله كثيرة ولكن ما ذكرته سابقا أتمنى ان يكون كافيا لايصال مفهوم الامر الى الكثير حيث انه من الاهمية بمكان لكل أدمن ومن بعض الامثله العملية أذكر هذا المثال :
فلستعراض البروسيس الخاصة بالاباتشي فقط مثلا نستخدم الامر :
ps auxw | grep http
وانظروا الناتج حتى تعرفوا مدى أهمية هذا الأمر ومدى الامكانيات التي يوفرها هذا الامر للادمنيستراتورس .
انتهى
تحياتي للجميع ،،
عبدالسلام