بسم الله الرحمن الرحيم
اليوم هنتكلم عن بعض النقاط المهمة فى نظام لينوكس
وقبل أى شىء يجب على الجميع ملاحظة أن اللينوكس يقوم بمعامله كل جزء فى السيستم وكل شىء وحتى الخدمات التى يقدمها على أساس انها text files ولذلك وجدت أهمية معرفه كيف تتعامل مع الملفات فى نظام لينوكس
نبدأ على بركة الله :
نبدأ بالامر sort
ما عمل هذا الأمر ؟؟ يقوم هذا الأمر بترتيب ملف معين على حسب أى شىء يتم تحديده بالامر فمثلا أريد ترتيب السطور فى ملف مثل
رمز PHP:
<code style="white-space:nowrap"> <code> /etc/passwd
</code> </code>
نفكر أولا على أى أساس سيتم الترتيب و كيف نقوم بهذا وما الجزء الذى سنقوم بالترتيب على أساسه ولكن أولا نقوم بعرض جزء من الملف :
رمز PHP:
<code style="white-space:nowrap"> <code> 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
</code> </code>
والمزيد ....
اولا نقوم بتحديد هل سنقوم بالترتيب الأبجدى أو بالترتيب العددى وعلى حسب أى حقل فى السطور سيتم الترتيب
نلاظ ان كل سطر مقسم إلى أكثر من حقل وكل حقل به معلومات مختلفة
نقوم بتحديد الفاصل بين الحقول فى الملف نجد انه علامة :
نقوم بتحديد الحقل الذى سيتم الترتيب على أساسه وهذا سيحدد أيضا كيفية الترتيب فمثلا لو اخترنا الحقل الأول سيقوم بالترتيب على أساس أبجدى ولو إخترنا الحقل الثالث سيقوم بالترتيب العددى من الأصغر للأكبر ... وهكذا
رمز PHP:
<code style="white-space:nowrap"> <code> sort -t: -k1 /etc/passwd
</code> </code>
فى الخيار -t قمنا بتحديد الفاصل بين الحقول الذى سيتم العد على أساسه والترتيب هنا ترتيب أبجدى ولكن ماذا إذا قمنا بعمل
رمز PHP:
<code style="white-space:nowrap"> <code> sort -t: -nk3 /etc/passwd
</code> </code>
سيكون الترتيب هنا عددى ولذلك اضنا حرف ال n ويكون الترتيب على أساس الخانة الثالثة فى السطر
يرجى قراءة ال man الخاص بالامر عن طريق :
رمز PHP:
<code style="white-space:nowrap"> <code> man sort
</code> </code>
وهذا جزء بسيط من الخيارات للأمر
رمز PHP:
<code style="white-space:nowrap"> <code> **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
</code> </code>
ومن أهمها طبعا الخيار -u فهى لا تظهر النتائج المتشابهة فى الترتيب بل تظهرها مرة واحدة فقط كالتالى :
نفذ الامر التالى :
رمز PHP:
<code style="white-space:nowrap"> <code> touch userlist.txt
echo "kareem abd elkader
> mostafa ahmed
> kareem abd elkader
> mostafa ahmed">userlist.txt
$ sort -u userlist.txt
</code> </code>
وهنا هتكون النتيجة :
رمز PHP:
<code style="white-space:nowrap"> <code> root@kareem-pc:~# sort -u userlist.txt
kareem abd elkader
mostafa ahmed
</code> </code>
بينما فى تنفيذ الأمر uniq على المخرجيقوم بعدهم ويقوم بذكر كم مرة تكررت الكلمة فى النص مع الترتيب كالتالى
رمز PHP:
<code style="white-space:nowrap"> <code> root@kareem-pc:~# sort userlist.txt | uniq -c
2 kareem abd elkader
2 mostafa ahmed
</code> </code>
نأتى إلى أمر اخر وهوا رمز PHP:
<code style="white-space:nowrap"> <code> diff and patch
</code> </code>
ما هوا الأمر diff
مثلا : لديك ملفان لإعدادات الأباتشى مثلا أحدهما معطوب والآخر سليم وتريد أن تعرف ما الفرق بين المعطوب والسليم أو أوجه الإختلاف بينهما لمعرفه وجه الخطأ هنا تظهر فائدة الأمر diff
رمز PHP:
<code style="white-space:nowrap"> <code> #diff broken.txt work.txt
</code> </code>
وهنا هيقوم بعرض المختلف بينهم وطبعا الترتيب واضح فالملف المعطوب ذكر أولا والملف السليم ذكر ثانيا وسيتم توضيح لماذا ولكن ليس الىن بل عند شرح طريقة patch
وهنا نريد مثلا ذكر الإختلافات بين الملفين فى ملف بحيث أستطيع مراقبة ومعرفة الإختلافات بشكل أوضح بعيدا عن شاشة الشل راقب الأمر التالى :
رمز PHP:
<code style="white-space:nowrap"> <code> #diff -u broken.txt work.txt >patch.patch
</code> </code>
الامر التالى أخرج لك الإختلاف فى ملف منفرد
والان أردت مثلا أن تقوم بتنفيذ الاختلافات على الملف المعطوب لديك ؟؟ماذا سيحدث ؟؟
نقوم بالتجربة :
1- قم بإنشاء ملفين متشابهين وليكن
رمز PHP:
<code style="white-space:nowrap"> <code> #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
</code> </code>
2- الان قم بالمقارنة وإخراج الناتج منهم :
رمز PHP:
<code style="white-space:nowrap"> <code> diff -u broken.txt work.txt >systems.patch
</code> </code>
3- قم بعرض محتويات الملف الناتج :
رمز PHP:
<code style="white-space:nowrap"> <code> root@kareem-pc:~# cat systems.patch
--- broken.txt 2014-03-25 03:41:32.000000000 +0200
+++ work.txt 2014-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
</code> </code>
والان نريد تطبيق الملف systems.patch على الملف broken.txt
نقوم بالامر التالى :
رمز PHP:
<code style="white-space:nowrap"> <code> root@kareem-pc:~# patch -b broken.txt systems.patch
patching file broken.txt
</code> </code>
وتمت عمليه الباتش
الامر هنا قام بعمل تطبيق للتغييرات الموجود فى ملف باتش على الملف المعطوب وهوا broken.txt وتم اختيار الخيار -b لكى يقوم بعمل نسخة احتياطية من الملف أو backup وسنرى هذا والان قم بعمل التالى :
رمز PHP:
<code style="white-space:nowrap"> <code> #ls -l
-rw-r--r-- 1 root root 61 2014-03-25 03:44 work.txt
-rw-r--r-- 1 root root 220 2014-03-25 03:44 systems.patch
-rw-r--r-- 1 root root 61 2014-03-25 03:46 broken.txt
-rw-r--r-- 1 root root 55 2014-03-25 03:43 broken.txt.orig
</code> </code>
الان لديك أربعة ملفات منهم ملف الباتش والملف السليم والملف المعطوب وملف نسخة احتياطية للملف المعطوب
وهى original وفى حين رغبت فى استرجاعه فى اى وقت ويمكنك قراءة المحتوى لكل ملف عن طريق
رمز PHP:
<code style="white-space:nowrap"> <code> #cat filename
</code> </code>
نكمل حديثنا ونستعمل أدارة رائعة فى لينوكس وهى
رمز PHP:
<code style="white-space:nowrap"> <code> $ aspell check letter.txt
</code> </code>
تقوم بعمل spelling فى الملف ويعمل لك check للهجاء للملفوتختار التعديل فتنفذه لك
مثل القاموس تماما
ننتقل إلى أهم الأوامر فى عالم لينوكس
رمز PHP:
<code style="white-space:nowrap"> <code> sed
</code> </code>
هوا عبارة عن محرر للنصوص يقوم بأكثر من عملية مثلا التحرير والبحث عن النصوص والتنفيذ على ملف هذه الأداة من أقوى الأدوات فى لينوكس وأقوى مما يبدو للجميع نبدأ حديثنا عنها :
رمز PHP:
<code style="white-space:nowrap"> <code> #sed -e 's/Ahmed/kareem/' /home/filename
</code> </code>
يقوم هذا الامر الان بالبحث داخل الملف المذكور مساره هنا /home/filename على كلمة Ahmed وإستبدالها بكلمة kareem ويعرض لنا النتائج فقط لاننا إستخدمنا الخيار -e فقد قام بالبحث والتحرير وذلك فى النتيجة المعروضة فقط لك وللتأكد قم بعرض الملف وستجد لم يتغير شىء
رمز PHP:
<code style="white-space:nowrap"> <code> #sed -i 's/Ahmed/kareem/' /home/filename
</code> </code>
بعد تغيير هذا الخيار قم بعرض الملف تلاحظ طبعا ماحدث من تغيير
والان ننتقل إلى طريقة أخرى لإستخدام هذى الأداة فمثلا :
رمز PHP:
<code style="white-space:nowrap"> <code> #sed '1,50s/dog/cat/g' /home/filename
</code> </code>
هنا يقوم بالبحث من السطر الاول وحتى السطر 50للبحث عن كلمة dog وابدالها بكلمة cat وذلك فى الملف كله Global
مثال اخر
رمز PHP:
<code style="white-space:nowrap"> <code> #sed '/kareem/,/redhat/s/engineer/SystemAdministrator/g' /home/filename
</code> </code>
هنا طلبت من الامر ان يقوم بالبحث فى الملف المذكور عن كل سطر يحتوى على كلمة kareem و redhat ويقوم بالبحث
داخل السطر عن كلمة engineer وتحويلها الى SystemAdministrator
ولكن فلنفترض وجود اكثر من كلمة أريد البحث عنها وتغييرها وقد لا يجمعهم سطر واحد ولكنهم فى الملف وهنا تقوم بالامر التالى :
رمز PHP:
<code style="white-space:nowrap"> <code> sed -i 's/ahmed/kareem/' -i 's/zeko/mostafa/' /home/filename
</code> </code>
وهناك فكرة أفضل
تضع كل تعديلاتك فى ملف كالتالى مثلا
رمز PHP:
<code style="white-space:nowrap"> <code> s/ahmed/kareem/
s/zeko/mostafa/
</code> </code>
وتقوم بتطبيق كل هذى التغييرات على الملف كالتالى :
رمز PHP:
<code style="white-space:nowrap"> <code> sed -f myedit /home/filename
</code> </code>
غلى هنا فقد إنتهينا من شرح طريقة بعض الأدوات المهمة فى التحكم فى النصوص والمحررات الخاصة بها فى لينوكس
ملاحظة : قد لايبدو مفيدا لدى البعض درس مفصلا مثل هذا ولكنه من القواعد الأساسية لأى مدير نظام system administrator ان يعرف ماذا يجب أن يكون بين يديه لتغيير ملفات ال config فى السيستم
ترقبوا المزيد
لا تنسونا من صالح دعواتكم
عند النقل يرجى ذكر المصدر
والكاتب
كريم عبد القادر
25مارس 2014
4:55 صباحا

©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©