استعمل مربع البحث في الاسفل لمزيد من المواضيع
سريع للبحث عن مواضيع في المنتدى
-
11-02-2013, بتوقيت غرينيتش 01:13 AM
#1
اساسيات ال Shell Scripting
سلام عليكم
اليوم ان شاء الله ابدا معاك فى شرح طريقة بسيط عن البرمجه على السرفرات
طبعا طريقه الشرح طريقة دي انا اللى مخترعها مقصدش حقوق الملكيه لكن اقصد ان لو فيها اخطاء معليش
اعذروني انا أول مره اشرح طريقة حاجه بالشكل ده
فى الاول لما بنيجي نعمل سكربت شيل لازم يكون الفكره واضحه فى دماغك وانت راسمها يدويا كدا
وفاضل انك تكتب الكود code ده يعتبر نص الشغل
يعني لو قولنا ان اننا عايزين سكربت يغير بسوردات المواقع كلها مره وحده ويبعتهالك
الخطوات بالبلدي كدا
نعرف اليوزرات كلها
نشوف هنعمل عليهم عمليه كل واحد ازاى
هنغير البسورد
نعرض البسورد اللى اتغير
نبعتها على الميل مثلا
بس علشان نعمل كدا لازم نفهم الشل سكربت ده بيشتغل ازاى
هنتكلم عن شويه حاجات مهمه
المتغيرات var
loops مش عارف معانها بالعربي الصراحه
الFunctions الدوال
الخوارج والمداخل وشويه عك كدا
المتغيرات الاول
دلوقتي انت عايز تعمل عمليه على نتيجه امر معين
يعني عايز تعمل عرض لأسماء اليوزرات الموجوده فى الموقع بطريقه الشيل سكربت
هتقوله ان اليوزرات مثلا بتجبهم بالامر ده
cat /etc/passwd | cut -d : -f1
فكره المتغير انه ياخد النتيجه دي يحزنها ولما تنادي عليه يعرضها
انت ممكن تقول
users=`cat /etc/passwd | cut -d : -f1`
كدا لما تكتب
echo $users
هيقوم جاي عارض لك كل اليوزرات
سيبك من شكل الأمر المطلوب دلوقتي فكره المتغير توصل لكم وهيا عموما زيها زي باقي لغات البرمجه بس لذيذه موت
لما تحب تعمل متغير اما بيكون بقيمه انت بتحطها او بيكون نتيجه أمر
حاجه ثابته تقوله مثلا
backup=/home/backup/4me
علشان لو عايز تستخدمه كتير بعد كدا ومش كل شويه تكتب المسار وعلشان متغلطش فيه كمان وعلشان يكون سهل التغير بعد كدا مش هتغير فى كل سطر موجود فيه الكلام ده
وممكن يكون نتيجه أمر كأن يكون
root@xen6 [~]# myos=` cat /etc/redhat-release`
root@xen6 [~]# echo $myos
CentOS release 5.2 (Final)
root@xen6 [~]#
احنا قولنا له ان المتغير اللى اسمه myos بيساوي ناتج الأمر بتاع cat /etc/redhat-
لو في اي حاجه فى المتغير قولولي لان البرمجه دي بتقوم بشكل قاعده الهرم كدا لو مفهمتش الأساس مش هتعرف تكمل ودي من الأساسيات
الLoops هو جوجل GOOGLE ترجمها بالعربي بالحلقات المهم انا هشرح طريقةها
بص يا سيدي لو انت مثلا عندك وظيفه واحده او عدة وظائف عايز تنفذها على كذا عنصر
مثلا عايز تحذف كل مجلد اسمه محمد من كل فلورد موجود جوه الهوم
وعايز تنفذ القصه دي بالشيل اسكربت هتعمل ايه
فيه طريقه بتعمل بيها العمليه على العنصر بشكل تسلسلي هنستخدم حاجه اسمها for
القانون بتاعها بيتكتب كدا
for var in command do
commands to be done
done
لكل var القادم من ناتج command
افعل كذا وكذا
تم
نقول بشكل عملي شويه
for x in `cat /etc/passwd ` do;
echo $x
done
بنقوله ان لكل قيمه تخرج من امر cat /etc/passwd والقيمه بتتحسب بالسطر
اعمل echo $x يعني اعرضه
وخلاص done
المتغير اللى اسمه x ده المحتوي بتاعه هو القيمه الخارجه من الأمر
هنعمل احنا عرض لكل سطر
ممكن بئا تعمل اي حاجه فى النص مثلا باك اب لكل ملفات الhome
تقوله
for يعني لكل
x اسم المتغير وممكن يكون اي عفريت تاني يعني x y z
in يعني في
ls /home/ محتوي ملفات الهوم
do يعني افعل الآتي
tar -czf $x.tar.gz $x يعني اعمل باك اب لكل مسار فى ملف بنفس الاسم على نفس المسار
نكتبه بشكل ينفع للشيل هنقوله
for x in `ls /home/` ;do
tar -czp $x.tar.gz $x
done
وفي كذا loop بئا
do while افعل كذا بينما القيمه الفلانيه بتساوي كذا دي هنشرح طريقةها ادام شويه
الدوال functions
الدوال دي عباره عن ايه شويه اوامر بتجمعهم مع بعض علشان الاختصار ولما تحب تنادي عليهم تكتب اسم الداله وخلاص بدل ما تكتب الأوامر كلها مره وحده وفيه حاجه مقدمه شويه انك تمرر فيها متغير يتنفذ عليه الأوامر اللى جوه بس دي هنشرح طريقةها ادام برضو
طريقه كتابه القانون بتاعها كدا
function zeko {
ls /tmp
ls /var/log
mount
df -h
}
الكلمه الاولانيه انت بتقول للنظام ان الكلام اللى جاي ده داله علشان ميفهمكش غلط ويبهدل الدنيا
زيكو ده اسم الدالة ان شاء الله
الأقواس دي طريقه الكتابه كدا تفتح القوس وتكتب اللى انت عايزه وبعدين تقفله بس أقواس من النوع ده
الكلام اللى في النص دي الأوامر اللى هتتنفذ لما تستدعي الدالة دي
وتستعديها ازاى
تكتب اسمها وخلاص
zeko
لو كتبتها فى الشيل هتلاقيه نفذ الكلام اللى جوه
اسم الداله انت حر تقدر تسميه ايه حاجه بس يكون حروف سمول فقط
الكلام اللى جوه اكتب اى امر انت عايزه
الدوال عموما حاجه زي المتغيرات بس بشكل متقدم شويه
الدواخل والخوارج والعك بئا
بص يا سيدي فى النظام فى تلت مخارج للأمر بتاعك لما بتنفذه او تلت أنفاق
لما بتكتب مثلا
ls /root /rooty
اللى انا عملت اني استخدمت الامر ده علشان يعرض ليا الملفين دول
الاول موجود والتاني مش موجود
الامر ده بيروح للكرينال وهيا اللى بترد وبترد بئا الكرينال دي على تلت أنفاق
حاجه اسمها
stdin
stdout
stderr
الأول ده بيطلع فيه النواتج الصحيحه
التاني ده بيكون فيه المداخل وهنشرح طريقةها فى باقي الدرس مفصل ان شاء الله
التالت ده المخرج بتاع الخطا
ولما تحب تحول الناتج بدل ما يطلعلك على الشاشه تقوله < دي معناها حول اللى طالع فى المكان الفلاني
ls /root /rooty > tmp/myls
هتلاقي فى الملف ده ناتج الأمر الاول بس
لكن الأمر التاني هو طلع من نفق الغلط وده بيكون فى 2>
بكدا بنكون وصلنا لنهايه حلقتنا انهاردا وان شاء الله نكمل باقي الدرس مفصل
هنشرح طريقة فيه
2>
/dev/null
positional parameter
وهنعمل سكربت يعمل اى فكره بسيطه حد يقترحها علينا
اسف على طريقتي العاميه فى الكتابة
سلام عليكم

©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©
المواضيع المتشابهه
-
بواسطة Chakira في المنتدى شروحات ،دروس ومشاكل وحلول الاستضافه
مشاركات: 0
آخر مشاركة: 11-02-2013, بتوقيت غرينيتش 01:31 AM
-
بواسطة loulou ange في المنتدى شروحات ،دروس ومشاكل وحلول الاستضافه
مشاركات: 0
آخر مشاركة: 11-02-2013, بتوقيت غرينيتش 01:11 AM
-
بواسطة linnou في المنتدى شروحات ،دروس ومشاكل وحلول الاستضافه
مشاركات: 0
آخر مشاركة: 11-02-2013, بتوقيت غرينيتش 01:05 AM
-
بواسطة romaissa في المنتدى ستايلات في بي الجيل vBulletin 3.x.x
مشاركات: 0
آخر مشاركة: 10-31-2013, بتوقيت غرينيتش 03:12 PM
-
بواسطة said في المنتدى تطوير منتديات vb3.8.0
مشاركات: 0
آخر مشاركة: 10-30-2013, بتوقيت غرينيتش 11:42 PM
ضوابط المشاركة
- لا تستطيع إضافة مواضيع جديدة
- لا تستطيع الرد على المواضيع
- لا تستطيع إرفاق ملفات
- لا تستطيع تعديل مشاركاتك
-
قوانين المنتدى