आइए पहले कुछ नमूना कोड देखें:
#include <stdio.h>
main()
{
// message 1, on stdout (using printf)
printf("%s", "message 1, on stdout (using printf)\n");
// message 2, on stdout (using fprintf)
fprintf(stdout, "%s", "message 2, on stdout (using fprintf)\n");
// message 3, on stderr (using fprintf)
fprintf(stderr, "%s", "message 3, on stderr (using fprintf)\n");
}
परिणामों की तुलना करें:
./helloerror
+ फ़ाइल: कोई संदेश नहीं; कंसोल: संदेश 1,2,3;
./helloerror >error.txt
+ फ़ाइल: संदेश 1,2; सांत्वना: संदेश 3;
./helloerror 2>&1 >error.txt
+ फ़ाइल: संदेश 1,2; सांत्वना: संदेश 3;
+ as ./helloerror> error.txt
./helloerror >error.txt 2>&1
+ फ़ाइल: संदेश 3,1,2; सांत्वना: कोई संदेश नहीं;
+ ध्यान दें क्रम 3 पहले है, फिर 1, फिर 2
./helloerror | tee error.txt 2>&1
+ फ़ाइल: संदेश 1,2; कंसोल: संदेश 3,1,2;
+ ध्यान दें क्रम 3 पहले है, फिर 1, फिर 2
./helloerror 2>&1 | tee error.txt
+ फ़ाइल: संदेश 3,1,2; कंसोल: संदेश 3,1,2;
उपयोग करने के लिए:
./helloerror >error.txt 2>&1
-> यदि कोई फ़ाइल में सभी (stdout + stderr) संदेश चाहता है, लेकिन कंसोल पर नहीं है
./helloerror 2>&1 | tee error.txt
-> अगर कोई फ़ाइल में सभी (stdout + stderr) संदेश चाहता है और कंसोल पर मुद्रित होता है
utility 2>&1 | tee output.log
, आप कहना है कि 1 के बाद से टी करने के लिए निर्देशित किया जा रहा है, 2 के साथ-साथ है मतलब है। के बाद से टी धारा डुप्लिकेट, उत्पादन दोनों के साथ-साथ कंसोल पर प्रदर्शित किया जाता है के रूप में फाइल करने के लिए लिखा? इसलिए बीच का अंतरutility 2>&1 > output.log
औरutility 2>&1 | tee output.log
हैtee
में यह धारा डुप्लिकेट चाहेंगे कि सही हो।?