मुझे यह बहुत पता है:
$ command 2>> error
$ command 1>> output
वहाँ किसी भी तरह मैं bash की एक ही पंक्ति में आउटपुट फ़ाइल में त्रुटि फ़ाइल और आउटपुट stdout को आउटपुट फ़ाइल में आउटपुट कर सकता हूं?
मुझे यह बहुत पता है:
$ command 2>> error
$ command 1>> output
वहाँ किसी भी तरह मैं bash की एक ही पंक्ति में आउटपुट फ़ाइल में त्रुटि फ़ाइल और आउटपुट stdout को आउटपुट फ़ाइल में आउटपुट कर सकता हूं?
जवाबों:
बस उन्हें एक पंक्ति में जोड़ें command 2>> error 1>> output
हालाँकि, ध्यान दें कि >>
यदि फ़ाइल में पहले से ही डेटा है तो इसे लागू करने के लिए है। जबकि, >
फ़ाइल में किसी भी मौजूदा डेटा को अधिलेखित कर देगा।
तो, command 2> error 1> output
अगर आप एपेंड नहीं करना चाहते हैं।
बस पूरा करने के लिए, आप 1>
बस के रूप में लिख सकते हैं >
क्योंकि डिफ़ॉल्ट फ़ाइल डिस्क्रिप्टर आउटपुट है। इसलिए 1>
और >
यही बात है।
तो, command 2> error 1> output
बन जाता है,command 2> error > output
command &2>err.log
, मुझे लगता है कि मैं पूरी तरह से भ्रमित भ्रमित हूँ। (सभी बैश पाइप-
command &2>err.log
है कि काफी वैध नहीं है - उस वाक्य रचना में एम्परसेंड का उपयोग फ़ाइल डिस्क्रिप्टर के लिए लक्ष्य के रूप में किया जाता है, उदाहरण के लिए stder के लिए sterout command 1>&2
reroute होगा।
इसे इस्तेमाल करे:
your_command 2>stderr.log 1>stdout.log
अंकों के 0
माध्यम से 9
कर रहे हैं फ़ाइल वर्णनकर्ता बैश में।
0
मानक इनपुट 1
के लिए खड़ा है, मानक उत्पादन 2
के लिए खड़ा है, मानक त्रुटि के लिए खड़ा है। 3
के माध्यम से 9
किसी भी अन्य अस्थायी उपयोग के लिए अतिरिक्त हैं।
किसी भी फाइल डिस्क्रिप्टर को ऑपरेटर का उपयोग करके किसी फाइल या किसी अन्य फाइल डिस्क्रिप्टर पर पुनर्निर्देशित किया जा सकता है >
। आप इसके बजाय >>
एक खाली बनाने के लिए एक फ़ाइल के लिए append करने के लिए ऑपरेटर का उपयोग कर सकते हैं ।
उपयोग:
file_descriptor > filename
file_descriptor > &file_descriptor
कृपया उन्नत बैश-स्क्रिप्टिंग गाइड देखें: अध्याय 20। I / O पुनर्निर्देशन ।
उसके जैसा:
$ command >>output 2>>error
या यदि आप एक एकल फ़ाइल में आउटपुट (stdout और stderr) को मिलाना चाहते हैं, जिसका आप उपयोग करना चाहते हैं:
command > merged-output.txt 2>&1
एकाधिक कमांड के आउटपुट को पुनर्निर्देशित किया जा सकता है। यह कमांड लाइन के लिए काम करता है या बैश स्क्रिप्ट में सबसे अधिक उपयोगी है। -s
पासवर्ड स्क्रीन करने के लिए संकेत भेजता है।
Hereblock cmds stdout / stderr को सेपरेट फाइल और कुछ भी प्रदर्शित करने के लिए नहीं भेजा जाता है।
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr को सिंगल फाइल और डिस्प्ले में भेजा जाता है।
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
यहाँब्लॉक cmds stdout / stderr को अलग-अलग फ़ाइलों और प्रदर्शित करने के लिए stdout में भेजा जाता है।
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
इस पर निर्भर करता है कि आप (whoami) कौन हैं और उपयोगकर्ता नाम पासवर्ड की आवश्यकता हो सकती है या नहीं।
1>
लिखा जा सकता है>