سؤال ماذا يفعل 2> / dev / null؟


أود الحصول على شرح موجز لخط الأوامر التالي:

grep -i 'abc' content 2>/dev/null 

151
2017-09-26 08:21


الأصل




الأجوبة:


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

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

> file يعيد توجيه stdout إلى ملف
1> file يعيد توجيه stdout إلى ملف
2> file يعيد توجيه stderr إلى الملف
&> file يعيد توجيه stdout و stderr إلى ملف

/dev/null هو الجهاز الفارغ الذي يأخذ أي مدخلات تريد ويرميها بعيدا. يمكن استخدامه لقمع أي إخراج.


221
2017-09-26 08:38



هل هناك فرق بين > /dev/null 2>&1 و &> /dev/null - Alexander Mills
في الممارسة العملية اليوم لا أعتقد أن هناك 2>&1 هو بناء قديم لذلك &> لن تعمل منذ سنوات لكن كلاهما متساوون. - Warren Hill


باختصار ، فإنه يعيد توجيه stderr (fd 2) إلى الثقب الأسود (يتجاهل إخراج الأمر).

بعض حالات الاستخدام الأكثر شيوعًا لإعادة التوجيه:

command > /dev/null 2>&1 &

يركض command في الخلفية ، تجاهل stdout و stderr

command >> /path/to/log 2>&1 &

يركض command إلحاق stdout و stderr إلى ملف سجل.


16
2017-09-26 08:32



هل هناك سبب وجيه للاستخدام > /dev/null 2>&1 بدلا من &> /dev/null؟ - Craig McQueen
CraigMcQueen &> هو جديد في Bash 4 ، السابق هو الطريقة التقليدية ، أنا فقط معتاد على ذلك (من السهل تذكر). - Terry Wang


/dev/null يتم التعامل مع الثقب الأسود في Linux / Unix ، بحيث يمكنك وضع أي شيء في هذا ولكنك لن تتمكن من استعادته /dev/null.

بالإضافة إلى ذلك، 2> يعني أنك تعيد التوجيه (أي >) stderr (أي 2) في الثقب الأسود (أي /dev/null)

الأمر الخاص بك هو:

grep -i 'abc' content 2>/dev/null 

لا تحاول أن تنتهي بخط مائل آخر مثل هذا - 2>/dev/null/ (انها ليست دليلا).


5
2018-06-11 10:57