الرئيسية | مركز المعلومات | مركز التحميل | للاعلان في مُطِّورْ | استخدم ختم مطور | قوِ موضوعك هام | وسام مطور جديد | افحص البيج رانك جديد

العودة   مطور , mtwer forum > مطور .. خطوتك الأولى من مستخدم الى مطور > استضافة المواقع و السيرفرات

استضافة المواقع و السيرفرات نقاش شركات استضافة المواقع، ريسلر ، vps ، في بي اس ، سيرفر ، سيرفرات، شركة استضافه ، الاستضافة ، خوادم، ريسلرات، السي بنل، لينكس.


عزيزي المطور ابتعد عن النقل، ولتكن مواضيعك جديدة وقيمة تعبر عن إبداعك وتميزك
إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 25-03-2009, 06:35 AM
مطور مشارك
 
تاريخ التسجيل: 18-03-2008
المشاركات: 81
karim24189 is on a distinguished road
Smile التحكم فى مخرجات الأوامر فى لينوكس (هام لكل مبتدىء ومحترف ومبرمج باش اسكربت)

السلام عليكم ورحمة الله وبركاته

ما هوا الStandard input و Standard output و Standard error


كود PHP:
      Linux provides three I/O channels to Programs
            Standard input 
(STDIN) - keyboard by default
            
Standard output (STDOUT) - terminal window by default
            
Standard error (STDERR) - terminal window by default 
نرجع لأول مرة درسنا حاسب الى فى حياتنا

سمعنا عن التالى فى الهاردوير الخاص بالجهاز :

المدخلات والمخرجات والعمليات

المدخلات عبارة عن مجموعة من البيانات بتقوم بادخالها للكمبيوتر وبعدها
بتتم العمليات على المدخلات دى ثم بيكون ناتج العملية هوا المخرجات
وهى عباة عن معلومات او بيانات تم التعديل عليها لتفيد المستخدم

حتى الآن شىء جميل

ماذا يفيد هذا فى شرحنا وكلامنا السابق

عند تعاملك مع الترمنال او الشل او اللينوكس عامة تقوم بإدخال إليه مجموعة من الأوامر

هذه الأوامر هى عبارة عن ال Standard input

يعنى مثلا كتبت للشل عبارة أو أمر :

كود PHP:
ls -alR /etc 
هذا هو المدخل الذى نقوم بإدخاله الى النظام او الشل

ومن ثم بعد هذا الأمر يقوم السيستم بالرد عليك بإعطائك قائمة طويلة جدا جدا جدا

رد السيستم أيا كان هوا عبارة عن Standard output وهو رد صحيح للعمليه
أى أن ما طلبته من السيستم شىء منطقى وقام بالرد عليه فى هيئة قائمة من
الملفات والتصاريح الخاصة بها والملفات أسفل المسارات بكافة الأشكال

ولكن لنفرض أننا قمنا بإعطاء السيستم أمر ما ونتج عنه مجموعة من الأخطاء التى ظهرت لك فى نافذة الترمينال

يعتبر هذا الخطأ الظاهر لك هوا عبارة عن Standard error

وليكن مثلا :
كود PHP:
ls -alR /kimotopalansary
ls
cannot access /kimotopalansaryNo such file or directory 
ناتج العملية السابقة كما هوا ظاهر لديك السيستم يخبرك بعدم وجود هذا المسار

انتهينا من النقطة الأولى
كود PHP:

Redirecting Output to a File 
ما معنى السطر السابق

هو تحويل المخرجات الى ملف معين أو إلى مسار معين

فمثلا :
عند تنفيذ الأمر التالى :
كود PHP:
ls -alR /etc 
يكون الناتج كبير جدا جدا لدرجة انى لن أستطيع قراءة كامل الناتج ولهذا فأنا لاأستفيد بالأمر الذى أعطيته للنظام
وهنا أقوم بعمل أمر للسيستم أوجه فيه له أن يخرج لى المخرجات إما ى ملف أو يظهر مجزء على الشاشة على قدر حجم الشاشة فقط
أى أننى أقوم بتحويل المخرجات الى مكان معيا فى النظام او الى ملف معين او اقوم باخراجه الى عمليه أخرى مثلا

دعنا نستعرض مثال :
كود PHP:
ls -alR /etc >/root/kareem.txt 
قم بالذهاب الى المسار /root ثم قم بعرض الملف kareem.txtماذا تلاحظ ؟؟؟
ظهور قائمة بكافة ملفات السيستم فى المسار الذى طلبت منه استعراضهاموجودة فى قائمة داخل الملف

كيف حدث هذا

حدث عن طريق تحويل المخرجات كلها الى ملف موجود فى مسار معين واذا كان الملف غير موجود يقوم السيستم بإنشاؤه لك

بمعنى آخر : كيف يمكننى التعامل مع هذه الإختصارات ؟؟؟ وكيف يتم كتابتها ؟ وما المفيد فيها ؟؟؟

كود PHP:
# > Redirect STDOUT to file 
تقوم هذه العلامة بتوجيه المخرجات الصحيحة عن طريق العلامة التالية ( < ) وتقوم بتحويل ال standard output الى المسار المذكور فى الأمر

هذه العلامة تقوم بتحويل ال ( <2 ) ال Standard error الى ملف معين او مسارا معينا وهى المخرجات الخاطئة الى مسار معين

بينما هذه العلامة

كود PHP:
&> Redirect all output to file 
تقوم بتحويل كامل الoutput الى مسار او الى ملف معين


ما فائدة تحويل الإيرور الناتج عن عمليه ما الى ملف معين ؟؟؟؟

احيانا تحتاج الى معرفة كافة البيانات الخاصة بالايرور لتعرف كيفية التغلب على هذا الايرور ومعرفة السبب الأساسى لوجوده

أمثلة على تحويل الايرور او تحويل ال output الى مسار معين أو تحويل الأيرور الى مسار معين


كود PHP:
ls -/etc less 
هنا يقوم النظام باخراج ناتج الامر جزء صغير و جزء صغير على حسب حجم الشاشة او الترمينال عندك
فيظهر صفحة صفحة وتتحرك فيه بالاسهم او بالبكره فى الماوس

كود PHP:
ls -/root/kareem >kimo.txt 
يقوم الامر السابق بنقل ناتج الأمر الى ملف معين لديك فى النظام وبفتح الملف يظهر لك كافة الناتج الخاص بالامر

كود PHP:
ls -alR /dev/1kjfdvasd /etc 2>kimo.txt >kimo1.txt 
الامر هنا عبارة عن طلب من السيستم بعرض محتويات مسارين مختلفين وهما
كود PHP:
/dev/1kjfdvasd
/etc 
ثم توجيه ناتج كل عمليه منهما الى ملف معين فالايرور يتم تحويله الى kimo.txt والناتج الصحيح يتم تحويله الى kimo1.txt
هنا نلاحظ أن المسار المطلوب عرض الملفات بيه غير موجود اصلا وهذا ينتج عنه إيرور معين والمسار الاخر يكون له ناتج فيقوم الملف بتوجيه الايرور الى الملف kimo.txt والناتج الصحيح يقوم بتوجيهه الى الملف kimo1.txt


وفى الامر التالى يمكننا توجيه كافة النواتج الى ملف معين وهنا يقوم بتوجيه الايرور والناتج الصحيح الى هذا الملف كما يلى outputall
كود PHP:
# ls -alR /dev/1kjfdvasd /etc &>outputall.txt 
ولكن تظهر لنا مشكلة وهى ان كلما يتم إضافة ايرور معين او ناتج عمليه صحيحه معين الى ملف يتم حذف السابق فى الملف والكتابه من جديد ( يعنى بيمسح ويكتب من الاول جرب وشوف كالتالى ):
كود PHP:
1-#ls -l /root >1.txt
2-#cat 1.txt
3-#ls -l /etc >1.txt
4-#cat 1.txt |less 
نلاحظ اختفاء ناتج العملية الاولى وظهور ناتج العملية التانية فقط فى الامر رقم 4

كيف يمكننى وضع كافة الأخطاء والنواتج فى ملف واحد بدون مسح محتويات الملف السابقة ؟؟؟؟

مثال يوضح كيف يتم هذا :
كود PHP:
1-#echo "Arabhardware.net">1.txt
2-#cat 1.txt
3-#echo "b7lmbeek" >>1.txt
4-#cat 1.txt
ويكون الناتج
Arabhardware
.net
b7lmbeek 
----
ننتقل الى أمثلة أقوى
كود PHP:
find /etc -name passwd 
يعنى انا بقول للسيستم يدورلى جوا ال/etc عن ملف معين اسمه passwd
طبعا فى اوبشن مختلف اخر اسمه iname بحيث انى لو طلبت منه يبحث عن ملف اسمه pAsSwD فهوا هيدور على الملف دا بنفس الشكل للحروف دى وهيجيبه برده ومش هيجيب غيره

طيب نحاول تنفيذ الأمر
وطبعا بيخرج لك مكان الملف بكل بساطة

طيب نحاول ندور بشكل تانى

كود PHP:
find /etc -name passwd fm.txt 
هنا شوف الناتج للعملية دى هتلاحظ انه طلع لك كل الملفات اللى بتحتوى على كلمه passwd

كود PHP:
find /etc -name passwd > /dev/null 
يعنى ايه ؟؟؟
وايه المكان الى انا وجهت له الايرور ؟؟؟؟
المكان اللى وجهت له الايرور هوا عبارة عن ثقب أسود فى السيستم يعنى اللى بيروح هناك مبيرجعش تانى او بيتمسح بشكل نهائى او بيروح للامكان

طيب مثال كمان

كود PHP:
find /etc -name passwd find.out 2find.err 
الحالة دى شرحتها قبل كدا

نأتى لنقطة تانية فى الشرح وهى pipes

يعنى بيحول من ال standered out الى programm

كود PHP:
#command1 | command2 | command3... etc 
يعنى مثلا ناتج عمليه انا قمت بيها فى السيستم باخد المخرجات بتاعته وبقوم بادخالها فى عمليه تانية خالص عن طريق ( ماسورة بالبلدى يعنى )

مثال بسيط
كود PHP:
cat /etc/passwd
cat 
/etc/passwd |grep "root"
cat /etc/passwd |grep "root" |grep "^root" |cut -f7 -d":" 
هنا ببساطة الامر الاول عمل اظهار فى الشل للملف ال/etc/passwd
الامر التانى هيطلع السطر اللى فيه الكلمة اللى أمرته بيها root
السطر التالت هيجيب السطر اللى بدأ ب root
الامر الاخير هيقوم بعمل cut يعنى قطع للحقل السابعf7 حينما يكون الفاصل هوا ":"
وهنا يكون الناتج

كود PHP:
/bin/bash 
مثال تانى :
كود PHP:
#$ echo "test email" | mail -s "test" root@kareem-desktop 
هوا هنا يقوم بطباعة الامر test email
ومن ثم يقوم بتحويلها الى امر اخر نقوم بارساله الى يوزر اخر او ايميل من خلال الامر mail والاوبشن التالى له -s هوا عنوان الرساله وفى النهاية تكتب الميل الذى سيتم الارسال الرساله اليه وهوا التالى root@kareem-desktop ثم Enter

طيب وافتح الميل اللى جالى ازاى ؟؟؟؟

عن طريق الامر mutt
ولو مش شغال معاك استعمل فى الاوبنتو لينوكس
كود PHP:
#sudo apt get install mutt 
ثم تقوم بالاختيار الايميل وتضغط انتر ويظهر لك محتوى الرساله ( لازم تجرب بايديك )
كود PHP:
Toroot@kareem-desktop
Subject
this is testmail
From
root <root@kareem-desktop>

testmail 
هنا الميل اللى انا بعته

دا ابسط مثال لل | pipe line

استعمال اخر
كود PHP:
#$ command1 | tee filename | command2 
الامر السابق يقوم بتنفيذ الكوماند رقم 1 اولا ثم يقوم بتمرير الناتج عن طريق pipe line الى الامر tee الذى يقوم بدوره بإنشاء ملف يحمل كافة مخرجات الكوماند الاول ثم يقوم بتمرير الملف بالكامل الى الكوماند رقم 2 لعمل عمليه معينه عليه

مثال
كود PHP:
#cat /etc/passwd | tee kimotop | grep "root" |grep "^root" | cut -f7 -d ":" 
الناتج من العملية
كود PHP:
#/bin/bash 
ثم قم بتنفيذ الامر التالى تجد أن ناتج الامر الاول يظهر بالملف بالكامل

كود PHP:
#cat kimotop |less 
مثال اخر

كود PHP:
$ ( cal 2007 cal 2008 ) | less 
ذكرنا من قبل أنه لكتابه اكثر من امر فى نفس السطر نقوم بوضع ال ; بينهم

وهنا عن طريق الأقواس التى تم وضع الامرين فيها يتم تنفيذ الامرين مرة واحدة
اما بالنسبة لبقية الامر فهو يتم إمرار الناتج للأمرين على pipe line بحيث
يكون الظاهر والناتج من العملية هوا جزء بسيط على قد الوندو الخاصة بالشل



كود PHP:
echo "kareem" |tr 'a-z' 'A-Z' 
والامر tr هنا هيحول الكلمة من small الى كابتل



تعالى ننفذ حاجة مهمة جدا

وهى Sending Multiple Lines to STDIN

يعنى انا بوجه كذا سطر لعمل امر واحد
زى اسه مثلا ؟؟؟

تعالى معايا نكتب الامر التالى :

مثلا أمر الميل
كود PHP:
#mail -s "kareem write multi lines" root@kareem-desktop <<END
Hi Jane,
>        
this is a try for anew method in linux
eshta fa7t
>        
Details later
krkr
END 
الملاحظ هنا ان الباش فضلت تستقبل منك أوامر بدون توقف و سابتك تكتب السطور دى كلها

لحد اما انته كتبت الكلمة END وهى نفسها اللى كتبتها فى السطر الاول

لما انته كتبتها فى السطر الاول الباش ملقتش الامر اكتمل ولا لقت لها معنى فسابتك تكتب لحد اما وصلت للجزء اللى خلصت انته فيه وقلت لها انا خلصت

طبعا END دى ممكن تكون اى حاجة تانية ان شاء الله حتى &#$@ او حتى حرف واحد
يعنى الباش بتستنى لحدا اما الامر يكمل او انته تضيف حاجة تعطى له معنى (افتراض حسن النية من الباش )
نأتى الى أداه تانية فى ال bash

وهى ال for -loop

انا عايز حاجة تتنفذ اكتر من مرة فبرميها فى اللوب دا

يعنى عايز اكريت ملف واحد اكتر من مرة او اخزن اكتر من قيمة فى اكتر من ملف
استخداماتها كتيرة جداااااااااااا

مثال :-- ......
انا عايز اكريت عشر ملفات فى فولدر معين
هعمل ايه ؟؟؟
كود PHP:
#mkdir test
#cd test
#for i in 'seq 1 10'
#do
#touch file$i
#done 
اعمل بقى ls
هتلاقيه عمل عشر ملفات بنفس الاسم file مع اختلاف الاسم بالارقام اللى فى المتغير i


ال i هنا عبارة عن قيمة او variable معين ممكن يتعوض داخله باى حاجة

يعنى جوا كل i حيث ال i من 1-10 فيقوم يروح يعمل الاوامر اللى معاه مضيف عليها الجزء السابق الخاص بالتعويض عن i لحد اما يوصل للاخر العد او الهارد يتملى

يعنى لو عايز اضيف او احذف جزء على الف ملف مثلا فبقوم بعمل الاتى :

اول حاجة هجيب اسماء الملفات اللى عايز اغير فيها فى ملف مثلا krkr.txt

بعمل for واسماء الملفات وبقوله cat للملف وبعدين echo الجزء اللى عايز اضيفه ثم append او >> بحيث انه يعمل الاضافة مش يمسحهم كلهم

اتمنى أكون وفقت فى التوصيل


بالتوفيق للجميع ان شاء الله

ملحوظة : الموضوع من كتابتى ونقلته من موقع تانى انا اللى كتبته فيه برده واى مقال بنشره فى مجال اللينوكس من كتابتى الخاصة

لا تنسونا من صالح دعائكم


أخوكم
كريم عبد القادر


توقيعى
* إسم الشركة : عرب توب هوست لخدمات مواقع الإنترنت
* صاحب الشركة :كريم عبد القادر حامد
* هاتف الشركة :0020107760963
* بريد الشركة : arbtopho@3rbtophost.com
* رابط الشركة :www.3rbtophost.com

رد مع اقتباس


  #2  
قديم 25-03-2009, 04:06 PM
اداري
 
تاريخ التسجيل: 09-03-2008
المشاركات: 1,413
أبو جنى is on a distinguished road
افتراضي

ما شاء الله تبارك الله عليك يا اخ كريم

مبدع ومتالق وموضوع مميز جدا جدا

الى الامام وبانتظار المزيد من مشاركاتك

تقبل تحياتي


توقيعى
مدير شركة توب لاين - فرع جدة
http://www.tl4s.com.sa
00966-2-6527954

رد مع اقتباس
  #3  
قديم 27-03-2009, 05:30 AM
مُطوِّرْ مراقب عام
 
تاريخ التسجيل: 22-07-2008
الدولة: دار الباطل
المشاركات: 467
محب الشيخين is on a distinguished road
افتراضي

بسم الله الرحمان الرحيم

صدقت وربى فى توقيعك

خيركم من تعلم العلم وعلمه

موضوع قيم وبما انى لا افقه شىء فى السيرفرات استفدت منه

ويمكن اتعلم على ايدك وتاخد فى اخوك ثواب

اعانك لله متابعك ان شاء الله

رد مع اقتباس
  #4  
قديم 02-04-2009, 01:42 AM
مطور مشارك
 
تاريخ التسجيل: 18-05-2008
المشاركات: 3
Mohamed Zaki is on a distinguished road
افتراضي

ماشاء الله كويس جدا

شكرا اخي

رد مع اقتباس
  #5  
قديم 31-05-2009, 03:05 PM
مطور مشارك
 
تاريخ التسجيل: 18-03-2008
المشاركات: 81
karim24189 is on a distinguished road
Smile عود أحمد ان شاء العلى القدير

اقتباس:
المشاركة الأصلية كتبت بواسطة أبو جنى مشاهدة المشاركة
ما شاء الله تبارك الله عليك يا اخ كريم

مبدع ومتالق وموضوع مميز جدا جدا

الى الامام وبانتظار المزيد من مشاركاتك

تقبل تحياتي
شكرا لمرورك

حفظك العلى القدير أخى الكريم .

اقتباس:
المشاركة الأصلية كتبت بواسطة عاشق الشهادة مشاهدة المشاركة
بسم الله الرحمان الرحيم

صدقت وربى فى توقيعك

خيركم من تعلم العلم وعلمه

موضوع قيم وبما انى لا افقه شىء فى السيرفرات استفدت منه

ويمكن اتعلم على ايدك وتاخد فى اخوك ثواب

اعانك لله متابعك ان شاء الله
ان شاء الله لنا عودة وما يهمنا الا نشر العلم والفائدة

اقتباس:
المشاركة الأصلية كتبت بواسطة mohamed zaki مشاهدة المشاركة
ماشاء الله كويس جدا

شكرا اخي
نورت الموضوع أخى محمد زكى

ترقبوا المزيد بعون الله


توقيعى
* إسم الشركة : عرب توب هوست لخدمات مواقع الإنترنت
* صاحب الشركة :كريم عبد القادر حامد
* هاتف الشركة :0020107760963
* بريد الشركة : arbtopho@3rbtophost.com
* رابط الشركة :www.3rbtophost.com

رد مع اقتباس
إضافة رد

العلامات المرجعية



مواضيع جديدة في قسم استضافة المواقع و السيرفرات

أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are معطلة
Pingbacks are معطلة
Refbacks are معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
التحديث الأخير لبرنامج Theme Scheduler لتبديل الثيمات تلقائيا remas rozan برامج و العاب الكمبيوتر 0 09-01-2010 06:16 PM
اسكربت على بابا , اسكربت مركز التجاره , اسكربت المزادات بالاجاكس و المزيد حصرياً مبارك تطوير المواقع 5 17-04-2009 09:43 AM
[توظيف] مطلوب مصمم ومبرمج ودعم فني النومسي وظائف و توظيف (طلب وظيفة - طلب موظفين) 4 10-03-2009 04:58 AM
مطلوب شخص يجيد رفع الافلام والمسلسلات ومحترف في اشراف المنتديات المروش وظائف و توظيف (طلب وظيفة - طلب موظفين) 18 07-12-2008 08:09 PM
الألوان وطريقه التعامل معها داخل الأوامر orkari لغات برمجة مواقع 0 31-03-2008 02:55 PM


قران كريم يوتيوب فيديو العاب بنات بلياردو العاب سيارات


جميع الأوقات بتوقيت GMT +3. الساعة الآن 10:00 PM.