ব্যাশে:
$ echo hi 2>&1 1>/dev/null | cat
$
জেডএসে থাকাকালীন:
$ echo hi 2>&1 1>/dev/null | cat
hi
$
স্ট্যান্ডার্ড আউটডাইরেক্ট করার সময় কি কেবল স্ট্যান্ডার্ড ত্রুটিটি পাইপ করার কোনও উপায় আছে?
ব্যাশে:
$ echo hi 2>&1 1>/dev/null | cat
$
জেডএসে থাকাকালীন:
$ echo hi 2>&1 1>/dev/null | cat
hi
$
স্ট্যান্ডার্ড আউটডাইরেক্ট করার সময় কি কেবল স্ট্যান্ডার্ড ত্রুটিটি পাইপ করার কোনও উপায় আছে?
উত্তর:
Zsh সহ এবং সাথে (ডিফল্ট অনুসারে) mult_iosবিকল্পটি সহ :
echo hi 2>&1 1>/dev/null | cat
1> /dev/null | catএর গুণিতক ফেরৎ হিসেবে দেখা হয় echoএর stdout- এ।
সুতরাং echostdout এখন উভয় পুনর্নির্দেশ করা হয়েছে /dev/nullএবং একটি পাইপ cat(যেমন ব্যবহার করছেন tee)।
সেই একাধিক পুনঃনির্দেশ বাতিল করতে, আপনি এটি করতে পারেন:
echo hi 2>&1 >&- > /dev/null | cat
তা হ'ল, পুনর্নির্দেশের আগে স্টডআউট (পাইপিং বাতিল করা) বন্ধ করা /dev/null
অথবা একটি কমান্ড গোষ্ঠী ব্যবহার করুন বা সাবশেল ব্যবহার করুন:
{echo hi 2>&1 1>/dev/null} | cat
(echo hi 2>&1 1>/dev/null) | cat
এইভাবে, echoস্টডআউটটি কেবল একবার স্পষ্টভাবে পুনঃনির্দেশিত হয় (পাইপ পুনর্নির্দেশটি গ্রুপ / সাবশেলে প্রয়োগ করা হয় এবং উত্তরাধিকার সূত্রে প্রাপ্ত হয় echo)।
অথবা আপনি multiosপুরোপুরি অক্ষম করতে পারেন :
(setopt nomultios; echo hi 2>&1 > /dev/null | cat)
বিকল্পভাবে, আপনি কোনও পাইপের পরিবর্তে প্রক্রিয়া বিকল্প ব্যবহার করতে পারেন :
echo hi 2> >(cat) > /dev/null
তবে সাবধান থাকুন যে যখন চাকরি নিয়ন্ত্রণ বন্ধ থাকবে (স্ক্রিপ্টগুলির মতো), catপ্রক্রিয়াটি অবিচ্ছিন্নভাবে চলবে (যেন শুরু হয়েছে &)।
{echo...}|cat)
(echo hi 2>&1 1>/dev/null) | cat।