بسم الله الرحمن الرحيم
عذرا على التأخير ولكن سنكمل بعد ذلك بلا توقف
هذا الجزء الأزل والجزء التانى سيشرح المحرر الرائع vi
اليوم هنتكلم عن بعض النقاط المهمة فى نظام لينوكس
وقبل أى شىء يجب على الجميع ملاحظة أن اللينوكس يقوم بمعامله كل جزء فى السيستم وكل شىء وحتى الخدمات التى يقدمها على أساس انها text files ولذلك وجدت أهمية معرفه كيف تتعامل مع الملفات فى نظام لينوكس
نبدأ على بركة الله :
نبدأ بالامر sort
ما عمل هذا الأمر ؟؟ يقوم هذا الأمر بترتيب ملف معين على حسب أى شىء يتم تحديده بالامر فمثلا أريد ترتيب السطور فى ملف مثل
نفكر أولا على أى أساس سيتم الترتيب و كيف نقوم بهذا وما الجزء الذى سنقوم بالترتيب على أساسه ولكن أولا نقوم بعرض جزء من الملف :
كود PHP:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
والمزيد ....
اولا نقوم بتحديد هل سنقوم بالترتيب الأبجدى أو بالترتيب العددى وعلى حسب أى حقل فى السطور سيتم الترتيب
نلاظ ان كل سطر مقسم إلى أكثر من حقل وكل حقل به معلومات مختلفة
نقوم بتحديد الفاصل بين الحقول فى الملف نجد انه علامة :
نقوم بتحديد الحقل الذى سيتم الترتيب على أساسه وهذا سيحدد أيضا كيفية الترتيب فمثلا لو اخترنا الحقل الأول سيقوم بالترتيب على أساس أبجدى ولو إخترنا الحقل الثالث سيقوم بالترتيب العددى من الأصغر للأكبر ... وهكذا
كود PHP:
sort -t: -k1 /etc/passwd
فى الخيار -t قمنا بتحديد الفاصل بين الحقول الذى سيتم العد على أساسه والترتيب هنا ترتيب أبجدى ولكن ماذا إذا قمنا بعمل
كود PHP:
sort -t: -nk3 /etc/passwd
سيكون الترتيب هنا عددى ولذلك اضنا حرف ال n ويكون الترتيب على أساس الخانة الثالثة فى السطر
يرجى قراءة ال man الخاص بالامر عن طريق :
وهذا جزء بسيط من الخيارات للأمر
كود PHP:
**Common options
-r performs a reverse (descending) sort
-n performs a numeric sort
-f ignores (folds) case of characters in strings
-u (unique) removes duplicate lines in output
-t c uses c as a field separator
-k X sorts by c-delimited field X
Can be used multiple times
ومن أهمها طبعا الخيار -u فهى لا تظهر النتائج المتشابهة فى الترتيب بل تظهرها مرة واحدة فقط كالتالى :
نفذ الامر التالى :
كود PHP:
touch userlist.txt
echo "kareem abd elkader
> mostafa ahmed
> kareem abd elkader
> mostafa ahmed">userlist.txt
$ sort -u userlist.txt
وهنا هتكون النتيجة :
كود PHP:
root@kareem-pc:~# sort -u userlist.txt
kareem abd elkader
mostafa ahmed
بينما فى تنفيذ الأمر uniq على المخرجيقوم بعدهم ويقوم بذكر كم مرة تكررت الكلمة فى النص مع الترتيب كالتالى
كود PHP:
root@kareem-pc:~# sort userlist.txt | uniq -c
2 kareem abd elkader
2 mostafa ahmed
نأتى إلى أمر اخر وهوا
ما هوا الأمر diff
مثلا : لديك ملفان لإعدادات الأباتشى مثلا أحدهما معطوب والآخر سليم وتريد أن تعرف ما الفرق بين المعطوب والسليم أو أوجه الإختلاف بينهما لمعرفه وجه الخطأ هنا تظهر فائدة الأمر diff
كود PHP:
#diff broken.txt work.txt
وهنا هيقوم بعرض المختلف بينهم وطبعا الترتيب واضح فالملف المعطوب ذكر أولا والملف السليم ذكر ثانيا وسيتم توضيح لماذا ولكن ليس الىن بل عند شرح patch
وهنا نريد مثلا ذكر الإختلافات بين الملفين فى ملف بحيث أستطيع مراقبة ومعرفة الإختلافات بشكل أوضح بعيدا عن شاشة الشل راقب الأمر التالى :
كود PHP:
#diff -u broken.txt work.txt >patch.patch
الامر التالى أخرج لك الإختلاف فى ملف منفرد
والان أردت مثلا أن تقوم بتنفيذ الاختلافات على الملف المعطوب لديك ؟؟ماذا سيحدث ؟؟
نقوم بالتجربة :
1- قم بإنشاء ملفين متشابهين وليكن
كود PHP:
#echo " linux rox
windows is sucks
mac for design
freebsd is amazing">work.txt
#echo "fedora rox
windws is bad system
mac
freebsd is amazing">broken.txt
2- الان قم بالمقارنة وإخراج الناتج منهم :
كود PHP:
diff -u broken.txt work.txt >systems.patch
3- قم بعرض محتويات الملف الناتج :
كود PHP:
root@kareem-pc:~# cat systems.patch
--- broken.txt 2009-03-25 03:41:32.000000000 +0200
+++ work.txt 2009-03-25 03:41:17.000000000 +0200
@@ -1,4 +1,4 @@
-fedora rox
-windws is bad system
-mac
+ linux rox
+windows is sucks
+mac for design
freebsd is amazing
والان نريد تطبيق الملف systems.patch على الملف broken.txt
نقوم بالامر التالى :
كود PHP:
root@kareem-pc:~# patch -b broken.txt systems.patch
patching file broken.txt
وتمت عمليه الباتش
الامر هنا قام بعمل تطبيق للتغييرات الموجود فى ملف باتش على الملف المعطوب وهوا broken.txt وتم اختيار الخيار -b لكى يقوم بعمل نسخة احتياطية من الملف أو backup وسنرى هذا والان قم بعمل التالى :
كود PHP:
#ls -l
-rw-r--r-- 1 root root 61 2009-03-25 03:44 work.txt
-rw-r--r-- 1 root root 220 2009-03-25 03:44 systems.patch
-rw-r--r-- 1 root root 61 2009-03-25 03:46 broken.txt
-rw-r--r-- 1 root root 55 2009-03-25 03:43 broken.txt.orig
الان لديك أربعة ملفات منهم ملف الباتش والملف السليم والملف المعطوب وملف نسخة احتياطية للملف المعطوب وهى original وفى حين رغبت فى استرجاعه فى اى وقت ويمكنك قراءة المحتوى لكل ملف عن طريق
نكمل حديثنا ونستعمل أدارة رائعة فى لينوكس وهى
كود PHP:
$ aspell check letter.txt
تقوم بعمل spelling فى الملف ويعمل لك check للهجاء للملفوتختار التعديل فتنفذه لك
مثل القاموس تماما
ننتقل إلى أهم الأوامر فى عالم لينوكس
هوا عبارة عن محرر للنصوص يقوم بأكثر من عملية مثلا التحرير والبحث عن النصوص والتنفيذ على ملف هذه الأداة من أقوى الأدوات فى لينوكس وأقوى مما يبدو للجميع نبدأ حديثنا عنها :
كود PHP:
#sed -e 's/Ahmed/kareem/' /home/filename
يقوم هذا الامر الان بالبحث داخل الملف المذكور مساره هنا /home/filename على كلمة Ahmed وإستبدالها بكلمة kareem ويعرض لنا النتائج فقط لاننا إستخدمنا الخيار -e فقد قام بالبحث والتحرير وذلك فى النتيجة المعروضة فقط لك وللتأكد قم بعرض الملف وستجد لم يتغير شىء
كود PHP:
#sed -i 's/Ahmed/kareem/' /home/filename
بعد تغيير هذا الخيار قم بعرض الملف تلاحظ طبعا ماحدث من تغيير
والان ننتقل إلى طريقة أخرى لإستخدام هذى الأداة فمثلا :
كود PHP:
#sed '1,50s/dog/cat/g' /home/filename
هنا يقوم بالبحث من السطر الاول وحتى السطر 50للبحث عن كلمة dog وابدالها بكلمة cat وذلك فى الملف كله Global
مثال اخر
كود PHP:
#sed '/kareem/,/redhat/s/engineer/SystemAdministrator/g' /home/filename
هنا طلبت من الامر ان يقوم بالبحث فى الملف المذكور عن كل سطر يحتوى على كلمة kareem و redhat ويقوم بالبحث
داخل السطر عن كلمة engineer وتحويلها الى SystemAdministrator
ولكن فلنفترض وجود اكثر من كلمة أريد البحث عنها وتغييرها وقد لا يجمعهم سطر واحد ولكنهم فى الملف وهنا تقوم بالامر التالى :
كود PHP:
sed -i 's/ahmed/kareem/' -i 's/zeko/mostafa/' /home/filename
وهناك فكرة أفضل
تضع كل تعديلاتك فى ملف كالتالى مثلا
كود PHP:
s/ahmed/kareem/
s/zeko/mostafa/
وتقوم بتطبيق كل هذى التغييرات على الملف كالتالى :
كود PHP:
sed -f myedit /home/filename
غلى هنا فقد إنتهينا من شرح بعض الأدوات المهمة فى التحكم فى النصوص والمحررات الخاصة بها فى لينوكس
ملاحظة : قد لايبدو مفيدا لدى البعض درسا مثل هذا ولكنه من القواعد الأساسية لأى مدير نظام system administrator ان يعرف ماذا يجب أن يكون بين يديه لتغيير ملفات ال config فى السيستم
ترقبوا المزيد
ولا تنسونا من صالح دعواتكم
وشكرى لأستاذى المهندس مصطفى طنطاوى
كريم عبد القادر
25مارس 2009
4:55 صباحا
المفضلات