[linux] إعادة توجيه كل المخرجات إلى الملف


Answers

تحتوي جميع أنظمة التشغيل POSIX على 3 مسارات : stdin و stdout و stderr. stdin هو المدخلات ، والتي يمكن أن تقبل stdout أو stderr. stdout هو الإخراج الأساسي ، الذي تتم إعادة توجيهه باستخدام > أو >> أو . stderr هو إخراج الخطأ ، والذي يتم التعامل معه بشكل منفصل بحيث لا يتم تمرير أي استثناءات إلى أمر أو كتابتها إلى ملف قد ينكسر ؛ عادة ، يتم إرسال هذا إلى سجل من نوع ما ، أو ملقاة مباشرة ، حتى عندما يتم إعادة توجيه stdout. لإعادة توجيه كليهما إلى نفس المكان ، استخدم:

command &> /some/file

EDIT : بفضل Zack للإشارة إلى أن الحل أعلاه ليس قابل للنقل - استخدم بدلاً من ذلك:

*command* > file 2>&1 

إذا كنت تريد إسكات الخطأ ، فنفذ ما يلي:

*command* 2> /dev/null
Question

هذا السؤال لديه بالفعل إجابة هنا:

أعلم أنه في Linux ، لإعادة توجيه الإخراج من الشاشة إلى ملف ، يمكنني إما استخدام > أو tee . ومع ذلك ، لست متأكدًا من سبب استمرار إخراج جزء من الإخراج إلى الشاشة وعدم كتابته إلى الملف.

هل هناك طريقة لإعادة توجيه كل الإخراج إلى الملف؟




يمكنك استخدام الأمر exec لإعادة توجيه كل إخراج stdout / stderr لأي أوامر لاحقة.

نموذج نصي:

exec 2> your_file2 > your_file1
your other commands.....



في Linux Mint ، وجهت سلسلة الأوامر هذه تنفيذ البرنامج النصي والأخطاء إلى ملف txt واحد. bash -x ./setup.sh > setup.txt 2>&1 . كان اسم البرنامج النصي setup.sh وكانت وجهة الإخراج setup.txt.




استخدم هذا - "require command here" > log_file_name 2>&1

وصف تفصيلي لمشغل إعادة التوجيه في يونكس / لينكس.

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

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

> file redirects stdout to file
1> file redirects stdout to file
2> file redirects stderr to file
&> file redirects stdout and stderr to file

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




قد يكون الخطأ القياسي. يمكنك إعادة توجيهها:

... > out.txt 2>&1



Related