উত্তর:
আপনি যদি একজন সি প্রোগ্রামার &1হন তবে আপনি "1 এর ঠিকানা" হিসাবে ভাবতে পারেন তাই 2>&1"ফাইল বিবরণী # 2 একই জায়গায় # 1" তে পুনর্নির্দেশ করুন reads
"টু টু ওয়ান" ("থেকে" সত্তা >) আমার কাছে "দুই এবং একজনের" চেয়ে বেশি যৌক্তিক ধারণা তৈরি করে, যা আমি সাধারণত এটির সাথে বিভ্রান্ত করতে পারি। যদি আপনি "এবং একটি" কে একক বিশেষ্য (একটি স্থান) হিসাবে বিবেচনা করেন তবে এটি প্রসঙ্গে ব্যাকরণগত ধারণাও তৈরি করে, যা "দুই এবং এক" এর সাথে করা আরও কঠিন - আপনাকে "এক" কে একটি একক হিসাবে বিবেচনা করতে হবে বিশেষ্য, এবং এটি এখনও প্রাসঙ্গিক ধারণা তৈরি করতে পারে না।
মনমোহনীয় নয়, তবে আমি এটি নীচে পড়লাম:
0স্টিডিন হয়।
1stdout হয়।
2stderr হয়।
>ভিতরে into
<এর বাইরে
&ফাইল বিবরণকারী (কিছু শেলের মধ্যে)।
2>&1
2 > & 1
stderr into file descriptor 1
redirect stderr into stdout
পুনর্নির্দেশের আগে আপনি যদি কোনও ফাইল বর্ণনাকারীর সাথে গণ্ডগোল করে থাকেন তবে এটি পরিবর্তন হতে পারে ...
2>somefile 1>&2
2 > somefile 1 > &2
stderr into somefile and stdout into file descriptor 2
redirect stderr into somefile and stdout into somefile.
আপনি যখন লিখবেন 2>&1, আপনি "স্ট্যান্ডার্ড ত্রুটিটি স্ট্যান্ডার্ড আউটপুটে যায়" বলছেন।
আসুন এটি ভেঙে দিন।
প্রথমে আপনি মুখস্থ করতে চান যে স্ট্যান্ডার্ড ত্রুটি 2এবং মান আউটপুট 1।
সুতরাং আপনি পেয়েছেন 2কিছু কিছু 1।
"যায়" তে লেখা আছে >।
সুতরাং আপনি পেয়েছেন 2>কিছু 1।
2>filenameমানে প্রমিত ত্রুটি প্রেরণ করুন filename। তবে আপনি এটি কল করা কোনও ফাইলে পাঠাতে চান না 1। আপনি অন্য কিছু চান: ইতিমধ্যে খোলা ফাইলের সংখ্যা। এটা কি &জন্য হয়।
তাই 2>&1।
আপনি যেমন একটি অ্যাসাইনমেন্ট করছিলেন, আপনি এটির মতো ভাবতেও পারেন, যেখানে >সমানটি সমান এবং সমানটির &মতো $, তুলনা করুন:
f=$1
2>&1
একাধিক পুনঃনির্দেশ সহ একটি কমান্ড লাইনটি বুঝতে, গুরুত্বপূর্ণ জিনিসটি হ'ল পুনর্নির্দেশগুলি বাম থেকে ডানদিকে সম্পন্ন করা হয়। সে সম্পর্কে আরও তথ্যের জন্য পুনর্নির্দেশের আদেশ দেখুন ।
আপনি যদি বুঝতে পারেন যে এফডি 2 টি এসটিডিআরআর, আপনি ভাবতে পারেন, "ওহ, এবং যেখানেই আমি এসটিডিআউট (এফডি 1) প্রেরণ করি সেখানে এসটিডিআরআর ক্যাপচার করুন"।
আমার সহকর্মীরা এবং আমি সাধারণত বলে থাকি "দুটি একজনের চেয়ে বড়", কারণ আমাদের বেশিরভাগ লোকেরা সবসময় মনে রাখে না যে stderrএটি ফাইল বর্ণনাকারী 2এবং stdoutএটি 1(বিশেষত যারা ইউনিক্স / লিনাক্সে নতুন), তাই পুনর্নির্দেশ সম্পর্কে অন্যান্য স্মৃতিবিজ্ঞানগুলি stderrআসলে কাজ করে না । কেবল সমস্যাটি হ'ল, আপনাকে এখনও মনে রাখতে হবে যে এম্পারস্যান্ডটি কোথায় যায়!