Stdout এবং stderr ফাইলে পুনirectনির্দেশ করুন

Redirect Stdout Stderr File



যখন আপনি কোন ফাইলে কোন কমান্ড আউটপুট পুন redনির্দেশিত করেন, আপনি লক্ষ্য করবেন যে ত্রুটি বার্তাগুলি টার্মিনাল উইন্ডোতে মুদ্রিত হয়। যেকোন লিনাক্স শেল, যেমন bash- এ চালানো যেকোনো কমান্ড তিনটি নিয়মিত I/O স্ট্রিম ব্যবহার করে। একটি সংখ্যাসূচক ফাইল বর্ণনাকারী প্রতিটি প্রবাহের প্রতিনিধিত্ব করতে ব্যবহৃত হয়।

  • স্ট্যান্ডার্ড ইনপুট স্ট্রিম (stdin): 0
  • স্ট্যান্ডার্ড আউটপুট স্ট্রিম (stdout): 1
  • স্ট্যান্ডার্ড ত্রুটি স্ট্রিম (stderr): 2

এই পোস্টে, আমরা stdout এবং stderr ফাইলে পুনirectনির্দেশের অধীনে আসা তথ্য উপলব্ধি করব।







স্ট্যান্ডার্ড আউটপুট (stdout):

লিনাক্স ভিত্তিক প্রতিটি অপারেটিং সিস্টেমে এক্সিকিউটেড কমান্ডের জন্য একটি ডিফল্ট স্থানের প্রত্যয় রয়েছে। প্রত্যেকেই এই ধারণাটিকে স্ট্যাডআউট বা স্ট্যান্ডার্ড আউটপুট হিসাবে উল্লেখ করে যাতে এটি সহজে শব্দ করে। আপনার বাশ বা জেডএসএইচ শেল ক্রমাগত ডিফল্ট আউটপুট অবস্থান খুঁজছে। যখন শেলটি নতুন আউটপুট সনাক্ত করে, এটি আপনার টার্মিনাল স্ক্রিনে এটি প্রদর্শন করে। অন্যথায়, এটি আউটপুটটিকে তার ডিফল্ট অবস্থানে পাঠাবে।



স্ট্যান্ডার্ড ত্রুটি (stderr):

স্ট্যান্ডার্ড ত্রুটি বা stderr স্ট্যান্ডার্ড ইনপুট এবং আউটপুট অনুরূপ, কিন্তু এটি ত্রুটি বার্তা সংরক্ষণের জন্য ব্যবহার করা হয়। স্ট্যান্ডার্ড ত্রুটি কমান্ড লাইন বা একটি টার্মিনাল ব্যবহার করে একটি ফাইলে পুনirectনির্দেশিত করা যেতে পারে। যদি আপনি একটি পৃথক লগ ফাইলে বার্তা রেকর্ড বা সংরক্ষণ করতে চান অথবা ত্রুটি বার্তাগুলি লুকিয়ে রাখতে চান, তাহলে stderr পুন redনির্দেশ আপনাকে সাহায্য করবে। এখন আসুন stdout এবং stderr পুনireনির্দেশের ব্যবহারিক দিকের দিকে।



একটি ফাইলে stdout এবং stderr পুন Redনির্দেশিত করা হচ্ছে:

যেহেতু পুনireনির্দেশ একটি প্রোগ্রাম আউটপুট ক্যাপচার এবং এটি অন্য কমান্ড বা ফাইলে ইনপুট হিসাবে পাঠানোর একটি পদ্ধতি। I/O স্ট্রিমগুলিকে n> অপারেটর ব্যবহার করে পুন redনির্দেশিত করা যেতে পারে, যেখানে n হল ফাইল বর্ণনাকারী নম্বর। Stdout পুন redনির্দেশের জন্য, আমরা 1> ব্যবহার করি এবং stderr এর জন্য, 2> একটি অপারেটর হিসাবে যোগ করা হয়।





আমরা আমাদের বর্তমান ডিরেক্টরিতে পুনirectনির্দেশিত আউটপুট সংরক্ষণ করার জন্য sample.txt নামে একটি ফাইল তৈরি করেছি।



(কমান্ড> ফাইল) ক্লাসিক পুন redনির্দেশ অপারেটর হিসাবে বিবেচিত হয় যা শুধুমাত্র টার্মিনালে দেখানো স্ট্যান্ডার্ড ত্রুটির সাথে স্ট্যান্ডার্ড আউটপুট পুন redনির্দেশ করে। আমরা stderr কে পুনirectনির্দেশিত করার জন্য বিভিন্ন বিকল্প প্রদর্শন করব।

পৃথক ফাইলগুলিতে stderr এবং stdout পুন Redনির্দেশিত করা হচ্ছে:

Stdout এবং stderr আলাদা ফাইল পুন redনির্দেশ করার জন্য কমান্ড সিনট্যাক্স নিচে দেওয়া হল।

কমান্ড >বাইরে2>ত্রুটি

নীচের দেওয়া কমান্ড আউটপুট আউটপুট এবং ত্রুটি বার্তা ত্রুটি ফাইলে পুনirectনির্দেশিত করবে।

$বিড়ালsample.txt>বাইরে2>ত্রুটি

Stderr কে stdout এ পুনirectনির্দেশিত করা:

একটি সাধারণ ফাইলের মধ্যে সবকিছু সংরক্ষণ করার জন্য একটি প্রোগ্রামের স্ট্যান্ডার্ড আউটপুট সহ stderr পুন redনির্দেশিত করা একটি সাধারণ অভ্যাস। Stderr কে stdout এ পুন redনির্দেশ করার জন্য কমান্ড সিনট্যাক্স এখানে:

কমান্ড >বাইরে2> &$ls >samplefile.txt2> &

$বিড়ালsamplefile.txt

> আউট পুন redনির্দেশগুলি stdout কে samplefile.txt এ পুন redনির্দেশিত করে, এবং 2> এবং 1 stdr কে stdout এর বর্তমান অবস্থানে পুনirectনির্দেশিত করবে।

যদি stderr কে প্রথমে stdout এ পুন redনির্দেশিত করা হয়, তাহলে stdout কে একটি ফাইলে পুন redনির্দেশ করতে নিচের দেওয়া কমান্ডটি ব্যবহার করুন।

কমান্ড 2> & > ফাইল$ls -কে 2> & >samplefile.txt

$বিড়ালsamplefile.txt

&> একই কার্যকারিতার জন্যও ব্যবহৃত হয় যা 2> এবং 1 সম্পাদন করে।

কমান্ড &> ফাইল$ls &>samplefile.txt

$বিড়ালsamplefile.txt

একটি একক ফাইলে stdout এবং stderr পুন Redনির্দেশিত করা হচ্ছে:

সমস্ত শেল এই ফর্ম পুনireনির্দেশকে সমর্থন করে না, তবে bash এবং Zsh এটি সমর্থন করে। Stdout এবং stderr নিম্নলিখিত সিনট্যাক্স ব্যবহার করে পুনirectনির্দেশিত করা যেতে পারে।

কমান্ড &>বাইরে$বিড়ালsample.txt&>বাইরে

নিবন্ধের আসন্ন বিভাগে, আমরা stdout এবং stderr পুনireনির্দেশের জন্য পৃথক উদাহরণ পরীক্ষা করব।

একটি ফাইলে stdout পুন Redনির্দেশিত করা হচ্ছে:

স্ট্যান্ডার্ড আউটপুট ফাইল বর্ণনাকারী সংখ্যার তালিকায় 1 দ্বারা উপস্থাপিত হয়। কোন ফাইল বর্ণনাকারী নম্বর ছাড়াই পুনirectনির্দেশিত কমান্ডের জন্য, টার্মিনাল তার মান 1 তে সেট করে।

কমান্ড > ফাইল

আমরা ls -al কমান্ডের স্ট্যান্ডার্ড আউটপুট সংরক্ষণের জন্য sample.file ব্যবহার করছি

$ls -কে >sample.txt

$বিড়ালsample.txt

কমান্ড > ফাইল$ls >sample.txt

$বিড়ালsample.txt

Stderr কে একটি ফাইলে পুনirectনির্দেশিত করা হচ্ছে:

Stderr কে একটি ফাইলে পুনirectনির্দেশ করার জন্য 2> অপারেটর ব্যবহার করুন।

কমান্ড 2> ফাইল $ls -কে 2>sample.txt

আমরা একক পুন redনির্দেশ কমান্ডে stderr এবং stdout এর জন্য মৃত্যুদন্ড কার্যকর করতে পারি।

কমান্ড 2>error.txt>output.txt

নীচের প্রদত্ত উদাহরণে, ত্রুটি বার্তাগুলি error.txt এ সংরক্ষণ করা হবে, যেখানে output.txt এর ls কমান্ডের স্ট্যান্ডার্ড আউটপুট থাকবে।

$ls 2>error.txt>output.txt

$বিড়ালoutput.txt

উপসংহার:

লিনাক্স টার্মিনালে কাজ করার সময় I/O স্ট্রিমগুলির জন্য পুনireনির্দেশ এবং ফাইল বর্ণনাকারীর ধারণা থাকা খুবই মূল্যবান। এই পোস্টে, আমরা stdout এবং stderr সহ নিয়মিত I/O স্ট্রিম সম্পর্কে কথা বলেছি। এই পোস্টের প্রথম বিভাগটি আপনাকে পুনireনির্দেশ, I/O স্ট্রিম এবং সংখ্যাসূচক ফাইল বর্ণনাকারী সম্পর্কে বিস্তারিত তথ্য এনেছে। পরবর্তী, আপনি stdout এবং stderr পুনireনির্দেশের বিভিন্ন রূপের জন্য ব্যবহারিক উদাহরণ দেখেছেন।