بسم الله الرحمن الرحيم
اليوم بعون الله هنتكلم عن ال Text Processing
ليه وازاى ؟؟؟
ايه فايدة دا فى اللينوكس ؟
اللينوكس بيشوف اى خدمة service او device او اى حاجة على اعتبار انها ملف موجود عنده وكمان بيشوف كل الاعدادات على اساس انها ملفات ودا فعلا حقيقى ان ملف مثلا اعداد سيرفر الاباتشى بيبقى موجود فى السيرفر وملف تانى بيمثل الهارد ديسك وملف تالت بيمثل حاجة كمان جوا السيستم وهكذا
ومن هنا جاءت فائدة التحكم فى الملفات وتعلم كيفية التعديل فيها والتعامل معها بسهولة للينوكس وتظهر أهميتها مثلا فى حالة ال logs فى السيرفر حيث انها بتوضح حالة السيستم وأى شىء بيحصل فيه لو حصل مثلا إيرور فى السيستم بيتم كتابته فى اللوجز فإنته محتاج تعرف ازاى تقدر تعدل فيها وتقدر تطلع الايرور اللى انته محتاجه لانها اكيد ملفات كتيرة جدا مثلا بالنسبة لسيرفر الاباتشى بيكون موجود مثلا فيه ان الايبى 2.2.2.2 دخل الساعة 3 وعمل actions معينة وطلب صفحات معينه على السيرفر فطبعا انا محتاج الملف دا ازاى اقدر اخرجه واتحكم فيه وادخله فى عمليه تانية وازاى احافظ على وجوده او ألغيه
ان شاء الله يظهر كل هذا فى ال vim و ال vi
وايضا يظهر من خلال أدوات التحكم فى الملفات والتعامل مع الملفات فى هذه ال unit
نبدأ على بركة الله :
كود PHP:
Tools for Extracting Text
*File Contents: less and cat
ادوات فى الباش يمكنها إستخراج بيانات من ملف والتعامل مع الملف او سطر داخل الملف لادخاله فى عمليه اخرى او عن طريق معرفته والتعامل معه
مثال على هذا الامر cat فانا بطلب من السيستم عرض محتويات الملف فى الشل بحيث يظهر لك فى الشل
وهنا أيضا نتقابل مع الخصائص لهذا الأمر مثلا :
كود PHP:
#ls -alR /etc
#ls -alR /etc >kimo.txt
#cat kimo.txt
#cat kimo.txt | less
#cat kimo.txt | more
فى الامر الاول هنا قمنا بعرض كافة البيانات الخاصة بالمسارات والملفات وتصاريحها داخل المسار /etc
فى الامر الثانى طبعا قمنا بعمل redirect فلم يظهر لنا شىء ولكن قام بإنشاء الملف kimo.txt فى المسار الحالى /root
هنا نلاحظ ان الامر الثالث قام بعرض المحتويات للملف فى صفحة الشل ولكن محتويات الملف كبيرة جدا جدا جدا لدرجة لا يمكن عرضها فى صفحة واحدة و الملف الحالى الذى يحتوى على كافة المسارات والملفات والتصاريح والمعلومات الخاصة بالمسار /etc
وفى الامر الرابع قمنا بعرض محتويات الملف طبعا لاحظنا انها كبيرة جدا ولكن أمرنا الشل بعرضها جزء جزء على قدر حجم الصفحة المفتوحه فى الشل وهنا يستخدم المفتاح enter والأسهم حتى تصل الى نهاية الملف وللخروج إضغط الحرف q
جميل حتى الان
الان نقوم بتجربه الامر مرة أخرى
كود PHP:
cat /etc/passwd | less
وهنا نرى ميزة رائعة وهى اننا نستطيع من خلال نفس النافذة استعمال محرر ال vi الرائع وذلك من خلال الضغط على v ثم / ونجرب البحث مثلا عن كلمة root يظهر لك كم مرة مكرره فى النص المعروض
او تقدر كمان تغير فى الملف من خلال ال vi وتحفظه كانك فاتح الملف بالظبط
ولكن :
أنا محتاج مثلا إنى أجيب أول عشر سطور فى الملف بستخدم الامر head ( الرأس )
كود PHP:
# head adduser.conf
ولو عايز مثلا اجيب اخر عشر سطور tail (الذيل )
كود PHP:
#tail adduser.conf
التحكم فى عدد السطور بيكون من خلال option معين تقدر تتحكم فيه بنفسك لازم تقرا فى ال manual للأوامر والله هتستفيد كتير جدا جدا جدا
مثال
كود PHP:
#head -n3 adduser.conf
نأتى للأمر الرائع cut
هنا هنستخدم كمثال الملف الموجود فى توزيعة كل منا /etc/passwd
بيعمل ايه الامر cut ؟
الأمر معناه قص وهوا بالظبط زى المنشار بمعنى انه قبل ما تستخدمه للقطع لازم تعرف هتقطع فين وهتقطع ازاى واللى هتقطعه هتستفيد فيه بإيه
مثال
هات اول سطر من الملف /etc/passwd ونشوفه
كود PHP:
#root:x:0:0:root:/root:/bin/bash
بغض النظر عن معنى المكتوب لانه سبق شرحه ولكن الملاحظ هنا ان الملف مقسم كل السطور كالتالى الى خانات كل خانه يفصل بينها علامة : تسمى delimiter
والخانة طبعا تسمى field
نحاول تطبيق الامر cut على الملف كما ينبغى
كود PHP:
#cut -f7 -d":" /etc/passwd
تم كتابه الامر cut بمعنى اقطع من الحقل field7حيث الفاصل بين الخانات او الحقول هوا علامة ال delimiter هى : وتم وضعها بين علامتى التنصيص كالتالى "" ننظر للناتج :
نرى قائمة طويلة من الكلمات كالتالى
كود PHP:
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sync
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
وهى القائمة التى قمنا بقصها فى الامر السابق .
نستكمل
فى أداة مهمة جدا فى الامر وسنشرح معناها اولا :
ماذا يحدث عندما يحدث مشكلة فى اى نظام تشغيل ؟؟؟ او حتى فى سيسكو ؟؟؟
بيتم ارسال الأخطاء أو ال debug اولا الى اليوزر وابلاغه باللى بيحصل اول باول
مثلا عندى ملف خاص باعدادات كارت النتورك فى الشبكة
مثلا فى السطر الاول بيقولك ان الكارت موجود
السطر التانى بيذكر الماك ادريسس
السطر التالت بيقولك ان الاتصال بالانترنت بيمر بمشكلة وبيذكرها وهكذا الحال
جميل حتى الان
ماذا لو أردت ان ارى الايرور فور حدوثه
يعنى ارى التقدم فى الملف لحظة بلحظة ...لكى استطيع الحل للمشكلة فور الحدوث يعنى live watch واعرف المشكلة فور ما بتدخل اللوج واعرف المشكلة منين عشان اقدر احلها
طيب اعمل كدا منين ؟؟؟؟
نلقى نظرة اولا على الملف اللى هنراقب التجديد فيه
كود PHP:
# vi /var/log/messages
اى شىء هيحصل فى السيستم بيتم ذكره فى الملف هنا
بنلاقى فى الملف معلومات عن كل حاجة فى السيستم مثلا معلومات عن ال TCP ,Hard disk , floppy
هنشوف كل التجديد فى الملف اول باول بالامر التالت :
كود PHP:
#tail -f /var/log/messages
طيب عايز اعمل تغيير
ممكن اوقع النتورك واشوف ايه اللى هيحصل وهيتكتب فى الملف
كود PHP:
#service network restart
نقدر نشوف التجديدات بالامر السابق وهوا
كود PHP:
#tail -f /var/log/messages
بس لازم تبقى فاتح اتنين نافذة للشل او الترمينال
هتشوف كل اللى بيحصل فى الملف لايف قدامك
ملاحظة الامر tail -f = الامر tailf
الجزء القادم مهم جدا يرجى التركيز جيدا جدا
الامر grep :
الامر بيعمل سيرش او طلب من السيستم انه يجيبلك كلمة مثلا من ملف معين يعنى هيجيب لك السطر بالكامل الذى يحتوى على كلمة x او الشىء المراد البحث عنه
مثال :
كود PHP:
#grep root /etc/passwd
هيروح للملف ويدور على كل السطور اللى فيها كلمة root ويجيبهالك
نشوف ال options اللى اوبشن ممكن تجيبهالى
اتبع الخطوات التالية :
كود PHP:
#echo " Hello ....!
#>mybestARABHARDWARE.NET
" >grep1.txt
بكدا انته عملت ملف اسمه grep1.txt وحطيت فيه الكلام اللى قدامك دا
كود PHP:
#grep ARABHARDWARE grep1.txt
الطبيعى هنا انه هيجيبلك الملف ومكانه اللى مكتوب فيه الجملة دى
كود PHP:
#mybestARABHARDWARE.NET
طيب لو كتبت للامر الكلمة كدا
كود PHP:
#grep arabhardware grep1.txt
مش هيلاقى اى حاجة لانه فعلا مش لاقى الكلمة لاختلاف شكل الحروف فهوا case sensative
وهنا بنلاقة option بيتيح لك البحث عن الكلمة فى اى ملف سواء CAPTAL OR small
كود PHP:
# grep -i arabhardware grep1.txt
طيب optin تانى يقدر يقولك الكلمة متكرره فى كام سطر مثال :
كود PHP:
# grep -n root /etc/passwd
نشوف option تانى :
كود PHP:
# grep -v root /etc/passwd
هنا هيجيب لك ويطبع لك كل السطور التى لا تحتوى على كلمة root
جرب الأمر القادم وإفهمه :d
كود PHP:
# grep -v root /etc/passwd |grep root
اتمنى يكون الجميع فهم الامر واتاكد من فعالية الاداه grep
فى كمان 2 options لكن الاول اكتب الامر دا
كود PHP:
# echo "line no 1
line no 2
line no 3" >>grep1.txt
كود PHP:
# grep -A3 HARD grep1.txt
يعنى هات كل الكلام اللى after او بعد كلمة Hard فى الملف دا
والنتيجة :
كود PHP:
mybestARABHARDWARE.NET
line no 1
line no 2
line no 3
كود PHP:
# grep -B3 HARD grep1.txt
يعنى هات كل الكلام اللى before او بعد كلمة Hard فى الملف دا
النتيجة :
كود PHP:
Hello ....!
mybestARABHARDWARE.NET
الامر cut تم شرحه من قبل
كود PHP:
#cat /etc/passwd | cut -f1 -d ":"
#cat -c3-c5 /etc/passwd
أو مثلا :
كود PHP:
#echo "aaaa
#BBBBBBBB
#CCCCCCCCCCCCC
#dddddddddddddddddddd " >krkr.txt
وبعدها هيختار الحروف من
كود PHP:
#cat -c1-c5 krkr.txt
ازاى اقدر اعمكل احصائيات للملف :
كام سطر كام كلمة كام حرف
اقدر ارتب الملف بطريقة ما
عندى سطور متكرره ومش عايز اطلعها فى الموضوع يعنى عايز السطور اللى مش متشابهة
دلوقتى وقت الادوات اللى تسمح لنا بالحاجات دى
فلنجرب مثلا التالى بالتركيز :
كود PHP:
5 12 67 grep1.txt
بيقدر يقولك الملف فيه كام كلمة وكام حرف وكام سطر
الامر دا ليه اوبشنز قوية جدا مثلا
يقولك كام سطر
كود PHP:
#wc -c krkr.txt
#wc -m krkr.txt
#wc -w krkr.txt
بيفيد فى ايه ؟؟؟
بعرف الفايل زاد ولا لاء ؟؟؟؟
او هل فى تعديل او معلومات اضافية تم اضافتها عليه او لاء
جرب اقرا ال
نروح للامر sort
كود PHP:
$ sort [options] file(s)
مثلا لما ابقى عايز اعمل ترتيب لسطور جوا ملف حسب الترتيب الأبجدى أو ال alphapetical مثال عندى فايل زى دا
نفذ الأمر التالى
كود PHP:
[root@localhost ~]# echo "aaa
aab
xyz
cli ">1.txt
اول شىء هيرتبه على حسب الترتيب الأبجدى
لو الملف فيه ارقامن هيتعمل الترتيب ب -m
طيب نجرب ونشوف
كود PHP:
[root@localhost ~]# sort 1.txt
aaa
aab
cli
xyz
نجرب تانى
كود PHP:
[root@localhost ~]# echo "9999
587
11111 ">1.txt
[root@localhost ~]# sort 1.txt
11111
587
9999
فى عندك reverse للترتيب
كود PHP:
[root@localhost ~]# sort -r 1.txt
9999
587
11111
طيب عايز اعمل ترتيب ومش عايز اطلع اى سطر متكرر
ازاى ؟؟؟ او يعنى ايه
نفذ الامر التالى :
كود PHP:
[root@localhost ~]# sort 2.txt
block
karim
karim
kimotop
mohamed
mohamed
mohamed
mohamed-saad
mrkrkr
thanks
[root@localhost ~]# sort -u 2.txt
block
karim
kimotop
mohamed
mohamed-saad
mrkrkr
thanks
الفرق واضح طبعا
طبعا مننساش ان الslide فيها التالى كله :
كود PHP:
$ sort [options] file(s)
Common options
●
-r performs a reverse (descending) sort
r
-n performs a numeric sort
r
-f ignores (folds) case of characters in strings
r
-u (unique) removes duplicate lines in output
r
-t c uses c as a field separator
r
-k X sorts by c-delimited field X
r
Can be used multiple times
■
ملحوظة : لازم تجرب بإيدك
سورى يا جماعة على التأخير هحاول أنزل النهارده ال lab 5
اسف على التأخير مرة تانية
بالنسبة لعنوان الموضوع
المحاضرة الخامسة من كورس RHCE من جامعة عرب هاردوير
لان اول محاضرة مكانش فيها تسجيل وكانت كلام بس فيعتبر ال lab 4 هوا المحاضرة الخامسة
لاتنسونا من دعواتكم
كريم عبد القادر
المفضلات