ব্যাশে:
$ 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- এ।
সুতরাং echo
stdout এখন উভয় পুনর্নির্দেশ করা হয়েছে /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
।