19Aug
إذا كنت شخصا مشغولا، ثم آخر شيء تحتاجه هو أن تكون ازعجت مع كمية كبيرة من الإخطارات "عديمة الفائدة"، فكيف يمكنك تهدئة الأمور إلى أسفل؟لدى سوبيروسر Q & أمب؛ A اليوم بعض الإجابات الرائعة لمساعدة القارئ على تقليل كمية الإخراج.
سؤال اليوم & أمب؛تأتي جلسة الجواب إلينا من باب المجاملة، وهو قسم فرعي من "ستاك إكسهانج"، وهو عبارة عن مجموعة من المواقع على شبكة الإنترنت.
قارئ أسد
السؤال يريد أن يعرف كيفية تشغيل أمر في الخلفية مع عدم وجود إخراج ما لم يكن هناك خطأ:
كيف قمع إخراج الأمر، ولكن تبين أنه إذا كان الأمر خروج رموز خطأ؟
كيف تحصل على أمر لتشغيل في الخلفية مع عدم وجود إخراج ما لم يكن هناك خطأ؟
المساهمون بسوبر
الجواب بوب و ماكسيميليان لوميستر لديهم الجواب بالنسبة لنا.أولا، بوب:
لسوء الحظ، الافتراض بأن ستدير يستخدم فقط لإخراج الخطأ ليس دائما الصحيح.بدلا من ذلك، ستدير غالبا ما تستخدم لأي وجميع الإخراج التفاعلي والتشخيص( أي الإخراج المقصود للمستخدم لقراءة في موجه التفاعلية).( 1) وجيت و د أمثلة معروفة.
توفر بعض الأوامر علامة( أي -quiet أو ) لمنع إخراج غير خطأ.قراءة صفحات الرجل لمعرفة ما إذا كان أحد موجود.
اتفاقية أخرى التي يتم الاحتفاظ بها في كثير من الأحيان هو رمز الخروج ، يقوم البرنامج بإرجاع رمز الخروج عند الخروج.عادة ( 2) ، رمز الخروج من 0 يشير إلى النجاح، وأي رمز خروج آخر يشير إلى خطأ.
مع ، يمكنك الحصول على رمز الخروج للأمر الأخير من $؟متغير .في الأسماك ، استخدم $ المتغير.يمكنك أنابيب ستدير إلى ملف مؤقت وطباعة فقط إذا حدث خطأ.على سبيل المثال( الأسماك ):
يمكنك أيضا استخدام بعض الاختصارات إذا لم تكن الأوامر تسلسل:
أو:
يمكنك أيضا أنابيب ستدوت إلى المخزن المؤقت نفسه باستخدام 2 & غ؛ & أمب؛ 1 & غ؛/tmp/ مخرجات .
( ملاحظة: أنا لا أعرف فعلا الأسماك ، لذلك أنا تكييف المفهوم إلى ما يمكن أن أجد في وثائقه.قد يكون بناء الجملة خطأ قليلا.أيضا، يمكنك استخدام مكتمب لإنشاء مؤقت فريدملف تشغيله وتسجيل اسم الملف في متغير.)
إذا كنت بحاجة إلى تشغيل كل شيء في خلفية قذيفة التي كنت تستخدم أيضا بشكل تفاعلي في نفس الوقت، ثم كنت أفضل من كتابة السيناريو للتعامل معالإخراج الاختباء وتشغيل هذا البرنامج النصي في الخلفية مع التقنيات القياسية( الأسماك ).هيك، يمكنك وضع شيء مثل وظيفة التالية في ~ /.config/fish/ config.fish :
استدعاء مع تشغيل سومكوماند الصامت & أمبير؛( حيث يؤدي و اللاحقة إلى تشغيله في الخلفية)
لاحظ أن هذا سيبتلع رمز الخروج الأصلي، وسوف تفريغ كل من ستدوت و ستدير في حالة حدوث فشل.يمكنك تخصيصه حسب الضرورة.
( 1) لا يوجد ضمان بأن الإخراج الخطأ لن تظهر على ستدوت ، بعض البرامج سوف تفريغ جميع الإخراج هناك!
( 2) لسوء الحظ، هذا لا يزال ليس دائما الحال.يتم التحكم في رمز الخروج تماما من قبل البرنامج، وبعضها يشير إلى بعض شروط النجاح مع مخارج غير صفرية.مرة أخرى، تحقق من الدليل.
تليها الإجابة من ماكسيميليان لوميستر:
أونيكس المرافق إرسال رسائل عامة إلى ، ورسائل الخطأ إلى ستدير ، لذلك إذا كنا نريد فقط أن نرى رسائل الخطأ، ثم سيكون كافيا لقمع ستدوت بحيثفقط ستدير يحصل الإخراج إلى وحدة التحكم.
طريقة القيام بذلك( في أسد والأسماك ) هي إلحاق & غ؛/dev/ فارغة إلى الأمر.هذه الأنابيب ستدوت إلى العدم، ولكن ستدير ( مع رسائل الخطأ الخاصة بك) لا يزال يأتي إلى وحدة التحكم.
على سبيل المثال:
الأمر إيكو 1 & غ؛/dev/ نول لا يطبع أي شيء، لأنه يتم إيقاف إخراج العادي، ولم يتم كتابة شيء إلى ستدير .
الأمر رجل داسنوتكسيست & غ؛/dev/ نول يطبع رسالة خطأ، لأن رجل يكتب رسالة خطأ إلى ستدير .
هل لديك شيء لإضافة إلى التفسير؟الصوت قبالة في التعليقات.هل ترغب في قراءة المزيد من الإجابات من مستخدمي إكساك إكسهانج؟تحقق من موضوع المناقشة الكامل هنا.