بسم الله الرحمن الرحيم
يوجد في نظام لينكس ثلاث أنواع من الملفات الخاصة بالتعامل مع دفق البيانات وهي :
- stdin : يرمز إلى سيل البيانات المستقبل في الطرفية "terminal" و يرمز له بالرقم 0 .
- stdout : يرمز إلى البيانات التي يتم طباعتها في الطرفية "terminal" و يرمز له بالرقم 1 .
- sterr : يرمز إلى رسائل الخطأ التي يتم طباعتها في الطرفية "terminal" و يرمز له بالرقم 2 .
يرمز الرقم 1 في "<1" إلى stdin , و سوف يقوم هذا الأمر بنفس عمل المثال الأول و لكن ماذا لو حدث خطأ في الأمر ls :
ls not_exits/ 1> file.txt
في هذا المثال يرمز not_exists إلى مجلد لا يوجد في النظام , و في هذه الحالة لن يتم تحويل أي بيانات إلى الملف file.txt بل سيتم طباعة رسالة الخطأ في موجه الأوامر "terminal" و لكن ماذا لو غيرنا الأمر إلى التالي :
ls not_exits/ 2> file.txt
سيتم حفظ رسالة الخطأ في الملف file.txt , تذكر الرقم 2 في "<2" يرمز إلى الملف sterr الخاص برسائل الخطأ فقط , وسوف يتم تجاهل البيانات في حالة نجاح تنفيذ الأمر ls .
و لكن ماذا لو أردنا طباعة رسائل الخطأ و البيانات العادية من البرامج المستخدمة في السكريبت , سيتم أستعمال الأمر التالي :
ls not_exits/ > file.txt 2>&1
في هذه الحالة سيتم حفظ الأخطاء و البيانات في الملف file.txt , و هذا شرح الجملة "2>&1" :
- 2 : الملف sterr الخاص برسائل الأخطاء
- < : تحويل البيانات التي يتم طباعتها بواسطة sterr إلى الملف stdout .
- & : توضع قبل أسم الملف 1 للتميز بين الملف stdout و أي ملف عادي بأسم "1" .
- 1 : الملف stdout الخاص بطباعة الرسائل في الطرفيه "terminal " .
و في البداية " file.txt < " حددنا الملف الذي سيتم حفظ البيانات و الأخطاء , و هذا بكل بساطة أستخدام "2>&1" .
و اذا كان عندك أي تعديل أو استفسار فلا تتردد .
في أمان الله
ليست هناك تعليقات:
إرسال تعليق