অন্যরা যেমন বলেছে, লিনাক্স দুটি পৃথক আউটপুট স্ট্রিম সরবরাহ করে:
স্টাডাউট বা "স্ট্যান্ডার্ড আউটপুট" হ'ল যেখানে সমস্ত নিয়মিত আউটপুট যায়।
আপনি ফাইল বর্ণনাকারী ব্যবহার করে এটি রেফারেন্স করতে পারেন 1
।
দ্বারা stderr , বা "মান ত্রুটি" আউট-অফ-ব্যান্ড তথ্যের জন্য একটি পৃথক প্রবাহ হয়।
আপনি ফাইল বর্ণনাকারী ব্যবহার করে এটি রেফারেন্স করতে পারেন 2
।
দুটি ভিন্ন আউটপুট স্ট্রিম কেন? কাল্পনিক আদেশগুলির একটি পাইপলাইন বিবেচনা করুন:
decrypt $MY_FILE | grep "secret" | sort > secrets.txt
এখন ভাবুন decrypt
কমান্ডটি ব্যর্থ হয়েছে এবং একটি ত্রুটি বার্তা উত্পন্ন করে। যদি এটি সেই বার্তাটি stdout
প্রেরণ করে তবে এটি পাইপটিতে প্রেরণ করবে এবং এটি "গোপন" শব্দটি না থাকলে আপনি কখনই দেখতে পাবেন না। সুতরাং আপনি কী খালি হয়েছে তার কোনও ধারণা ছাড়াই একটি খালি আউটপুট ফাইলটি শেষ করবেন।
তবে, পাইপ কেবল ক্যাপচার stdout
করায়, decrypt
কমান্ডটি তার ত্রুটিগুলি এখানে প্রেরণ করতে পারে stderr
, যেখানে সেগুলি কনসোলে প্রদর্শিত হবে be
আপনি পুনর্নির্দেশ করতে পারেন stdout
এবং stderr
, হয় একসাথে একত্র হওয়া বা স্বাধীনভাবে:
# Send errors to "errors.txt" and output to "secrets.txt"
# The following two lines are equivalent, as ">" means "1>"
decrypt $MY_FILE 2> errors.txt > secrets.txt
decrypt $MY_FILE 2> errors.txt 1> secrets.txt
আপনি ত্রুটিগুলি পুনর্নির্দেশ করতে পারেন stdout
এবং এগুলি প্রক্রিয়া করতে পারেন যেন তারা স্বাভাবিক আউটপুট থাকে:
# The operation "2>&1" means "redirect file descriptor 2 to file
# descriptor 1. So this sends all output from stderr to stdout.
# Note that the order of redirection is important.
decrypt $MY_FILE > errors.txt 2>&1
# This may be confusing. It will store the normal output in a file
# and send error messages to stdout, where they'll be captured by
# the pipe and then sorted.
decrypt $MY_FILE 2>&1 > output.txt | sort
আপনি stdout এবং stderr উভয় একই ফাইলে পুনর্নির্দেশ করতে একটি "শর্টহ্যান্ড" স্বরলিপি ব্যবহার করতে পারেন :
decrypt $MY_FILE &> output.txt
এবং, অবশেষে, >
অপারেটর প্রথমে লেখার আগে এর আউটপুট ফাইলটি কেটে ফেলবে । পরিবর্তে, আপনি যদি কোনও বিদ্যমান ফাইলে ডেটা যুক্ত করতে চান তবে >>
অপারেটরটি ব্যবহার করুন :
decrypt $MY_FILE 2>> more_errors.txt >> more_secrets.txt
decrypt $MY_FILE >> more_output.txt 2>&1