it-swarm.asia

ماذا "2> & 1" تفعل في سطر الأوامر؟

أعلم أن علامة > تُستخدم لإعادة توجيه الإخراج في سطر الأوامر ، لكنني أجد صعوبة في العثور على شيء يفسر استخدام 2>&1 في سطر الأوامر. فمثلا:

curl http://www.google.com > /dev/null 2>&1 &
59
Matt Huggins

تشير 1 إلى الإخراج القياسي (stdout). تشير 2 إلى الخطأ القياسي (stderr).

لذا ، يقول 2>&1 لإرسال خطأ قياسي إلى حيث يتم إعادة توجيه الإخراج القياسي أيضًا. أي أنه منذ إرساله إلى /dev/null يشبه تجاهل أي إخراج على الإطلاق.

77
Chealion

2 يشير إلى STDERR. سوف يرسل 2>&1 STDERR إلى نفس موقع 1 (STDOUT).

5
John T

أفهم ما يلي:

إذا كنت ترغب فقط في قراءة معلومات الإخراج والخطأ الخاصة بالأمر على الشاشة ، فاكتب فقط: curl http://www.google.com

وفي بعض الأحيان تريد حفظ معلومات المخرجات في ملف بدلاً من شاشة المحطة للمراجعة اللاحقة ، ثم يمكنك الكتابة: curl http://www.google.com > logfile

ولكن بهذه الطريقة ، سيتم حذف معلومات StdErr ، لأن > فقط تعيد توجيه StdOut إلى logfile.

لذلك إذا كنت تهتم بمعلومات الخطأ الخاصة بالأمر بمجرد فشله في التنفيذ ، فأنت بحاجة إلى دمج StdOut مع StdErr باستخدام 2>&1 (مما يعني طي StdErr في StdOut) ، لذلك يمكن كتابة سطر الأوامر التالي: curl http://www.google.com > logfile 2> & 1

0
YaOzI