আউটপুট stdout বা stderr হয় কিনা তা নির্ধারণ করুন


22

কীভাবে কোনও প্রক্রিয়া আউটপুটটিং স্টাডআউট বা স্টডারার হয় তা আমি কীভাবে নির্ধারণ করতে পারি?

উত্তর:


22

STDOUT এ কোন প্রোগ্রাম কী আউটপুট দেয় এবং STDERR এ কী নির্ধারণ করা যায় তা নির্ধারণ করার জন্য আমি কেবল তিনটি উপায় জানি

  1. ডকুমেন্টেশন পড়ুন। অথবা

  2. পুনঃনির্দেশ সঙ্গে পরীক্ষা iment

  3. লাল মধ্যে STDERR মুদ্রণ করুন

†উদাহরণ স্বরূপ:

program > program.stdout 2> program.stderr

তারপরে প্রোগ্রামটি STDOUT এ কী লিখেছে এবং এটি STDERR এ কী লিখেছে তা দেখতে দুটি আউটপুট ফাইলগুলি দেখুন।

পুনর্নির্দেশের পরিবর্তে আপনি teeযদি পর্দার পাশাপাশি একটি ফাইলের কাছে চালিয়ে যাওয়ার আউটপুট প্রয়োজন তবে আপনি পাইপ করতে পারেন। Https://stackoverflow.com/q/692000/477035 দেখুন


15
আমি সাধারণত 3 বিকল্পের একটি প্রকরণ ব্যবহার করি: program | grep .প্রিন্ট করুন STDOUT লাল।
— ডেনিস

লাল রঙে মুদ্রণ করা ঠিক ঠিক আমি যা খুঁজছিলাম is ধন্যবাদ রেডগ্রিটিব্রিক ও ডেনিস
— রাউফেল

7

আপনার মন্তব্য করা অনুরোধের ভিত্তিতে:

{ { command; } 2>&3 | sed 's/^/STDOUT: /'; } 3>&1 1>&2 | sed 's/^/STDERR: /'

3
চিত্তাকর্ষক দেখাচ্ছে। তবে আপনি কি আপনার গাছে চেরি যুক্ত করতে এবং এটি কী করছে তা ব্যাখ্যা করতে আপত্তি করবেন? চারপাশের প্রত্যেকেই গুরু নন - এবং আপনার
— নির্মাণটি

বন্ধনী অর্ডার করার জন্য। আমি আসলে আই-ভুলে যাওয়া-যেখানে থেকে সেই সঠিক ফর্মটি পেয়েছি, তবে বিন্দুটি হ'ল বন্ধনীগুলির অভ্যন্তরীণ সেটটির আউটপুট নিতে অতিরিক্ত ফাইল বর্ণনাকারী (1 = stdoutএবং 2 = এর বাইরে stderr) ব্যবহার করতে হবে এবং stdoutএকটি sedকমান্ডের stderrমধ্য দিয়ে চলতে হবে while একটি ভিন্ন এক।
— zebeiah49

কি দারুন. এই অতিরিক্ত বর্ণনাকারী ব্যবহার করতে জানতেন না। প্রথমে আমি কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম (আমি কী চালাচ্ছি তা বুঝতে পছন্দ করি - এবং কোঁকড়া ধনুর্বন্ধনীগুলির সাথে কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম)। তবে এখন এটি স্পষ্ট - এবং আইএমএইচও ঠিক ওপি কী চেয়েছিল। আমার কাছ থেকে তাই +1 :)
— ইজজি

এটি আমাকে সাহায্য করেছিল। আমি স্টাডারে আরও ডেটা যুক্ত করতে চেয়েছিলাম। এটি এটি করে এবং স্টাডআউট / স্ট্ডারকে সঠিকভাবে আউটপুট করে। { { { { echo "stdout" ; echo "stderr">&2; } 2>&3; } 3>&1 1>&2 | awk '{print "ERROR:",$0}' 1>&3; } 3>&2 2>&1; }
— ব্রায়ান ড্রুয়ারি

0

আপনি কেবল স্টাডারকে একটি ফাইলে পুনর্নির্দেশ করতে পারেন এবং যদি এতে কিছু দেখা যায় তবে এটি স্টডার থেকে এসেছে।

যেমন ls -a 2> ls-all.txt

স্ট্যাডারকে পাঠানো কোনও কারণে যদি ত্রুটি ঘটে থাকে তবে তা এই ফাইলে পুনর্নির্দেশ করা হবে।


-1

আপনি যদি এটি একবার বন্ধ করতে চান তবে তাদের মধ্যে একটি অন্য কোথাও পুনর্নির্দেশ করুন।

উদাহরণস্বরূপ, এর সাথে স্ট্যান্ডার্ডকে পুনর্নির্দেশ করা >।

ls -al> ls-l.txt (এখানে যে কোনও আউটপুট স্টাডআউট থেকে নয়, যদি আপনি কিছু দেখেন তবে এটি অবশ্যই স্টারডার আউটপুট হতে হবে)

স্ট্যাডার পুনঃনির্দেশ ব্যবহারের জন্য 2>


প্রক্রিয়া আউটপুট একটি ধ্রুবক স্ট্রিম তৈরি করে, কেউ কেউ স্ট্যাডারকে stdout করে। আমি নির্ধারণ করতে চাই যে এই আউটপুটটি পর্দায় যা যাচ্ছে
— রাউফল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.