आप के लिए निम्न चाल का उपयोग कर सकते स्वैप stdout
और stderr
। फिर आप बस नियमित पाइप कार्यक्षमता का उपयोग करें।
( proc1 3>&1 1>&2- 2>&3- ) | proc2
बशर्ते stdout
और stderr
दोनों शुरुआत में एक ही जगह पर इशारा करें, इससे आपको वह मिलेगा जो आपको चाहिए।
x>y
फ़ाइल हैंडल को बदलने के लिए बिट क्या करता है x
इसलिए यह अब इसकी जानकारी भेजता है कि फाइल हैंडल y
वर्तमान में कहां पर है । हमारे विशिष्ट मामले के लिए:
3>&1
एक नया हैंडल बनाता है 3
जो वर्तमान हैंडल 1
(मूल स्टडआउट) को आउटपुट करेगा , बस इसे नीचे अंतिम बुलेट बिंदु के लिए कहीं और सहेजने के लिए।
1>&2
वर्तमान हैंडल (मूल stderr) 1
को आउटपुट करने के लिए हैंडल (stdout) को संशोधित करता है ।2
2>&3-
वर्तमान हैंडल (मूल stdout 2
) के लिए आउटपुट ( संभाल ) को संशोधित करता है ( फिर अंत में) के माध्यम से हैंडल बंद कर देता है ।3
3
-
यह प्रभावी रूप से स्वैप कमांड है जिसे आप एल्गोरिदम को सॉर्ट करते हुए देखते हैं:
temp = value1;
value1 = value2;
value2 = temp;
rc
, जो एक और शेल है। उदाहरण के लिए:proc1 |[2] proc2
। क्या यह अच्छा नहीं है?bash
हालांकि में नहीं ।