আউটপুট 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.