শেল কমান্ডের আউটপুট আড়াল করার মধ্যে সাধারণত স্টডার এবং স্টডআউট পুনর্নির্দেশ জড়িত। ডিফল্টরূপে আউটপুটটি আড়াল করে তবে ত্রুটিতে সমস্ত জমা হওয়া আউটপুট ফেলে দেয় এমন কোনও বিল্টিন সুবিধা বা কমান্ড রয়েছে? আমি এটিকে রিমোট ssh
কমান্ডের মোড়ক হিসাবে চালাতে চাই । এখন আমি সেগুলি পুনঃনির্দেশ ব্যবহার করছি তবে কী কারণে তারা ব্যর্থ হয়েছে সে সম্পর্কে আমি কোনও ধারণা পাই না এবং তারা কেবল খুব ভার্জোজ।
সম্পাদনা: শেষ পর্যন্ত আমি @ বেলমিনের উত্তরের উপর ভিত্তি করে নীচের টেম্পলেটটি তৈরি করেছি যা আমি স্ক্রিপ্ট থেকে পূর্ববর্তী সমস্ত কমান্ড সংগ্রহ করতে, বর্তমান প্রক্রিয়া শনাক্তকারী ব্যবহার করে, স্বয়ংক্রিয়ভাবে লগটি সরিয়ে ফেলতে এবং একটি ব্যর্থতার সাথে ত্রুটিযুক্ত লাল ত্রুটি যুক্ত করেছি বার্তা যখন কিছু ভুল হয়ে যায়। এই টেমপ্লেটে প্রাথমিক silent
মোড়কগুলি সফল হবে, তারপরে তৃতীয় আদেশটি ব্যর্থ হবে কারণ ডিরেক্টরিটি ইতিমধ্যে বিদ্যমান রয়েছে:
#!/bin/sh
set -e
SILENT_LOG=/tmp/silent_log_$$.txt
trap "/bin/rm -f $SILENT_LOG" EXIT
function report_and_exit {
cat "${SILENT_LOG}";
echo "\033[91mError running command.\033[39m"
exit 1;
}
function silent {
$* 2>>"${SILENT_LOG}" >> "${SILENT_LOG}" || report_and_exit;
}
silent mkdir -v pepe
silent mkdir -v pepe2
silent mkdir -v pepe
silent mkdir -v pepe2
2>&1
, এরকম কিছু:$* >>"${SILENT_LOG}" 2>&1" || report_and_exit