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




5 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
linux bash io-redirection

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

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

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




استخدم هذا - "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



يمكنك استخدام الأمر 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.




Related