$ program [arguments...] 2>&1 | tee outfile
2>&1
स्टंपर और स्टडआउट स्ट्रीम को डंप करता है।
tee outfile
इसे जो स्ट्रीम मिलती है वह इसे स्क्रीन पर और फाइल "आउटफिट" में लिख देता है।
यह शायद वही है जो ज्यादातर लोग ढूंढ रहे हैं। संभावित स्थिति कुछ कार्यक्रम या स्क्रिप्ट लंबे समय तक कड़ी मेहनत कर रही है और बहुत सारे उत्पादन का उत्पादन कर रही है। उपयोगकर्ता इसे समय-समय पर प्रगति के लिए जाँचना चाहता है, लेकिन फ़ाइल में लिखा आउटपुट भी चाहता है।
समस्या (विशेषकर जब स्टडआउट और स्टेडर धाराओं को मिलाते हुए) यह है कि कार्यक्रम द्वारा प्रवाहित की जा रही धाराओं पर निर्भरता है। यदि, उदाहरण के लिए, स्टैडआउट के सभी राइट्स को फ्लश नहीं किया जाता है , लेकिन स्टडर को सभी राइट्स को फ्लश कर दिया जाता है, तो वे आउटपुट फाइल और स्क्रीन पर कालानुक्रमिक क्रम से बाहर हो जाएंगे।
यह भी बुरा है अगर कार्यक्रम प्रगति की रिपोर्ट करने के लिए केवल कुछ ही मिनटों में 1 या 2 लाइनों का उत्पादन करता है। ऐसे मामले में, यदि आउटपुट प्रोग्राम द्वारा फ्लश नहीं किया गया था, तो उपयोगकर्ता को घंटों तक स्क्रीन पर कोई आउटपुट दिखाई नहीं देगा, क्योंकि इसमें से कोई भी घंटे के लिए पाइप के माध्यम से धक्का नहीं देगा।
अद्यतन: कार्यक्रम unbuffer
, expect
पैकेज का हिस्सा , बफरिंग समस्या को हल करेगा। यह स्क्रीन और फ़ाइल को लिखने के लिए स्टडआउट और स्टॉडर का कारण बनेगा और संयुक्त और पुनर्निर्देशित होने पर उन्हें सिंक में रखेगा tee
। उदाहरण के लिए:
$ unbuffer program [arguments...] 2>&1 | tee outfile