كيفية إعادة توجيه stderr إلى stdout في Bash

How Redirect Stderr Stdout Bash



تأخذ الأوامر في Linux بعض المدخلات من المستخدم ، والتي يمكن أن تكون ملفًا أو أي سمة ، وعند التنفيذ ، فإنها تعطي بعض المخرجات تسمى الإخراج القياسي. يمكن أن يكون الإخراج القياسي ناتجًا ناجحًا أو ناتج خطأ ؛ سيتم عرض كليهما على شاشة المحطة الطرفية. لكن في بعض الحالات ، قد ترغب في تخزين المخرجات القياسية في ملف لاختبار الشفرة أو تصحيحها. في Linux ، يمكن إعادة توجيه هذه المخرجات إلى ملف ، وتسمى عملية التقاطها إعادة التوجيه.







تنتج كل عملية في Linux ثلاثة تدفقات بيانات ، stdin ، و stdout ، و stderr:



  • ستدين : يأخذ المدخلات من المستخدم عبر لوحة المفاتيح
  • stdout : يعرض الإخراج على الشاشة
  • ستدير : يظهر معلومات الخطأ على الشاشة

يحتوي كل دفق بيانات على معرف رقمي:



معرف رقمي اسم
0 ستدين
1 stdout
2 ستدير

دعونا نشرح إعادة التوجيه قليلاً بالتفصيل:





كيفية إعادة توجيه الإخراج القياسي والخطأ القياسي في Bash:

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

$ls 1>stdout.txt

سيقوم الأمر أعلاه بإنشاء ملف ووضع الإخراج القياسي للأمر ls في ملف stdout.txt.



لقراءة ملف stdout.txt ، استخدم:

$قطstdout.txt

يمكننا أيضًا إعادة توجيه الخطأ القياسي إلى ملف باستخدام الأمر:

$قطmyfile.txt2>stderr.txt

لعرض ملف stderr.txt ، استخدم:

$قطstderr.txt

تأكد من أن استخدام 2 سيكون أكبر من علامة>. نظرًا لعدم وجود ملف myfile.txt في الدليل ، سيعطي الأمر cat خطأ سيتم إلحاقه في ملف stderr.txt.

يمكن إعادة توجيه هذه المخرجات القياسية بأمر واحد أيضًا ، استخدم:

$ls 1>stdout.txt2>stderr.txt

سيتم كتابة إخراج الأمر ls في ملف stdout.txt ملف ، ولكن stderr.txt ستبقى فارغة لأنه لن يكون هناك خطأ.

الآن دعنا نفعل لـ stderr.txt:

$قطmyfile.txt1>stdout.txt2>stderr.txt

استخدم الأمر المذكور أدناه لقراءة stderr.txt.

$قطstderr.txt

وبالطبع ، سيكون ملف stdout.txt فارغًا.

استنتاج :

يعطي أمر Linux عند التنفيذ إخراجًا قياسيًا يمكن أن يكون ناتجًا ناجحًا أو ناتجًا خطأ. بشكل عام ، لا يمكن إعادة توجيه هذه المخرجات باستخدام عوامل إعادة التوجيه ؛ نحتاج إلى استخدام معرفات رقمية محددة بعلامة>. في هذا الدليل ، تعلمنا كيفية استخدام هذه المفاتيح الرقمية لإعادة توجيه الإخراج القياسي إلى ملف يحتوي على أمثلة.