سؤال

لدي برنامج نصي bash يقوم بتشغيل برنامج به معلمات.يُخرج هذا البرنامج بعض الحالة (فعل هذا، فعل ذلك...).لا يوجد خيار لهذا البرنامج ليكون هادئا.كيف يمكنني منع البرنامج النصي من عرض أي شيء؟

أنا أبحث عن شيء مثل windows "صدى قبالة".

هل كانت مفيدة؟

المحلول

وفيما يلي يرسل الإخراج القياسي إلى الجهاز لاغية (بت دلو).

scriptname >/dev/null

وإذا كنت تريد أيضا رسائل الخطأ ليتم إرسالها هناك، استخدم واحد من (الأولى قد لا تعمل في جميع قذائف):

scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null

وإذا كنت ترغب في تسجيل الرسائل ولكن لا نراهم، استبدل /dev/null مع ملف الفعلي، مثل:

scriptname &>scriptname.out

لاكتمال، تحت ويندوز الملف التنفيذي cmd.exe (حيث "NUL" ما يعادل "/ ديف / لاغية")، هو:

scriptname >nul 2>nul

نصائح أخرى

وشيء من هذا القبيل

script > /dev/null 2>&1

وهذا سيمنع الإخراج القياسي <م> و الناتج الخطأ، وإعادة توجيه لهم على حد سواء ل/dev/null.

وحاول

: $(yourcommand)

و: هو اختصار ل "لا تفعل شيئا".

و$() هو مجرد الأمر الخاص.

البديل الذي قد يكون مناسبًا في بعض المواقف هو إسناد نتيجة أمر إلى متغير:

$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1

نظرًا لأن Bash وغيره من مترجمي سطر الأوامر POSIX لا يعتبرون التعيينات المتغيرة بمثابة أمر، فسيتم احترام رمز الإرجاع الخاص بالأمر الحالي.

ملحوظة: تكليف مع typeset أو declare تعتبر الكلمة الأساسية بمثابة أمر، لذا فإن رمز الإرجاع الذي تم تقييمه في هذه الحالة هو المهمة نفسها وليس الأمر الذي تم تنفيذه في الغلاف الفرعي:

$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0

ومثل andynormancx آخر استخدام هذا: (إذا كنت تعمل في بيئة يونيكس)

scriptname > /dev/null

وأو يمكنك استخدام هذا: (إذا كنت تعمل في بيئة ويندوز)

scriptname > nul

ألق نظرة على هذا المثال من مشروع توثيق لينكس:

3.6 العينة:ملف stderr وstdout 2

سيؤدي هذا إلى وضع كل مخرجات البرنامج في ملف.يكون هذا مناسبًا أحيانًا لإدخالات cron، إذا كنت تريد تمرير الأمر في صمت تام.

     rm -f $(find / -name core) &> /dev/null 

ومع ذلك، يمكنك استخدام عملية إعادة التوجيه البسيطة هذه:

/path/to/command &>/dev/null

في لك النصي يمكنك إضافة ما يلي إلى الخطوط التي تعرف ذاهبون لإعطاء الإخراج:

some_code 2>>/dev/null

ووإلا يمكنك أيضا محاولة

some_code >>/dev/null
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top