কিভাবে বাশ এ stdout এ stderr পুন Redনির্দেশিত করবেন

How Redirect Stderr Stdout Bash



লিনাক্সে কমান্ডগুলি ব্যবহারকারীর কাছ থেকে কিছু ইনপুট নেয়, যা একটি ফাইল বা যেকোনো বৈশিষ্ট্য হতে পারে এবং চালানোর পর তারা স্ট্যান্ডার্ড আউটপুট নামে কিছু আউটপুট দেয়। স্ট্যান্ডার্ড আউটপুট একটি সফল আউটপুট বা একটি ত্রুটি আউটপুট হতে পারে; উভয়ই আপনার টার্মিনাল স্ক্রিনে প্রদর্শিত হবে। কিন্তু কিছু ক্ষেত্রে, আপনি কোডটি পরীক্ষা বা ডিবাগ করার জন্য একটি ফাইলে স্ট্যান্ডার্ড আউটপুট সংরক্ষণ করতে চান। লিনাক্সে, এই আউটপুটগুলিকে একটি ফাইলে পুন redনির্দেশিত করা যেতে পারে এবং এটি ক্যাপচার করার প্রক্রিয়াটিকে পুনireনির্দেশ বলে।







লিনাক্সে প্রতিটি প্রক্রিয়া তিনটি ডেটা স্ট্রিম তৈরি করে, stdin, stdout, এবং stderr:



  • stdin : কীবোর্ডের মাধ্যমে ব্যবহারকারীর কাছ থেকে ইনপুট নেয়
  • stdout : স্ক্রিনে আউটপুট প্রদর্শন করে
  • stderr : পর্দায় ত্রুটির তথ্য দেখায়

প্রতিটি ডেটা স্ট্রিমের একটি সংখ্যাসূচক আইডি থাকে:



সংখ্যাসূচক আইডি নাম
0 stdin
stdout
2 stderr

আসুন পুনর্নির্দেশকে আরও বিস্তারিতভাবে ব্যাখ্যা করি:





ব্যাশে স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি কীভাবে পুনirectনির্দেশিত করবেন:

কমান্ডের স্ট্যান্ডার্ড আউটপুট পুন redনির্দেশিত করার জন্য, আমরা একটি পুনireনির্দেশ অপারেটর সহ 1 ব্যবহার করব যা> চিহ্নের চেয়ে বড়:

$ls >stdout.txt

উপরের কমান্ডটি একটি ফাইল তৈরি করবে এবং ls কমান্ডের স্ট্যান্ডার্ড আউটপুট stdout.txt ফাইলে রাখবে।



Stdout.txt ফাইলটি পড়তে, ব্যবহার করুন:

$বিড়ালstdout.txt

আমরা কমান্ড ব্যবহার করে একটি ফাইলের পাশাপাশি স্ট্যান্ডার্ড ত্রুটি পুনirectনির্দেশ করতে পারি:

$বিড়ালmyfile.txt2>stderr.txt

Stderr.txt ফাইলটি দেখতে, ব্যবহার করুন:

$বিড়ালstderr.txt

নিশ্চিত করুন যে ব্যবহার 2> চিহ্নের চেয়ে বড় হবে। যেহেতু ডিরেক্টরিতে myfile.txt ফাইল নেই, তাই cat কমান্ড একটি ত্রুটি দেবে যা stderr.txt ফাইলে যুক্ত হবে।

এই স্ট্যান্ডার্ড আউটপুটগুলি একটি একক কমান্ড দিয়েও পুনirectনির্দেশিত করা যেতে পারে, ব্যবহার করুন:

$ls >stdout.txt2>stderr.txt

Ls কমান্ডের আউটপুট লেখা হবে stdout.txt ফাইল, কিন্তু stderr.txt খালি থাকবে কারণ কোন ত্রুটি হবে না।

এখন stderr.txt এর জন্য করা যাক:

$বিড়ালmyfile.txt>stdout.txt2>stderr.txt

Stderr.txt পড়তে নিচের উল্লিখিত কমান্ডটি ব্যবহার করুন।

$বিড়ালstderr.txt

এবং অবশ্যই, stdout.txt খালি থাকবে।

উপসংহার :

এক্সিকিউটিভ করার সময় লিনাক্স কমান্ড স্ট্যান্ডার্ড আউটপুট দেয় যা একটি সফল আউটপুট বা একটি ত্রুটি আউটপুট হতে পারে। সাধারণত, এই আউটপুটগুলি পুনireনির্দেশ অপারেটর ব্যবহার করে পুন redনির্দেশিত করা যায় না; আমাদের> চিহ্ন সহ নির্দিষ্ট সংখ্যাসূচক আইডি ব্যবহার করতে হবে। এই গাইডে, আমরা উদাহরণ সহ একটি ফাইলে স্ট্যান্ডার্ড আউটপুট রিডাইরেক্ট করার জন্য এই সংখ্যাসূচক কীগুলি কীভাবে ব্যবহার করতে হয় তা শিখেছি।