2011-09-23 9 views
234

मुझे लगता है कि आदेशएक फाइल करने के लिए दोनों stdout और stderr रीडायरेक्ट करने के लिए

मैं उपयोग के निष्पादन के लिए एक लॉग फ़ाइल बनाता है एक bash स्क्रिप्ट निम्नलिखित

Command1 >> log_file 
Command2 >> log_file 

चला रहा हूँ कैसे यह केवल मानक भेजता है आउटपुट और टर्मिनल पर दिखाई देने वाली मानक त्रुटि नहीं।

क्या मैं एक फाइल में लॉग इन और stdout दोनों लॉग इन कर सकता हूं?

command > file 2>&1 

उत्तर

349

आप एक ही फाइल करने के लिए लॉग इन करना चाहते हैं:

command1 >> log_file 2>&1 

आप तो विभिन्न फाइलें चाहते हैं:

command1 >> log_file 2>> err_file 
+98

और किसी और को निराशा, ध्यान दें कि आदेश महत्वपूर्ण है: '2> और 1'' log_file' के बाद होने की आवश्यकता है। – Rufflewind

+4

क्यों '>>' और नहीं '> '? – user3527975

+5

'>> 'फ़ाइल में संलग्न होता है,'> 'ओवरराइट करता है। अधिक जानकारी के लिए "खोल पुनर्निर्देशन" के लिए खोजें। – Mat

26

आपको लगता है कि 2> & 1 की तरह यह कर सकते हैं

command >>log_file 2>>log_file 
+12

+1, पर पुनः निर्देशित हो जाता है '2 और बस को बचाने के लिए> 1' फ़ाइल वर्णनकर्ता 2 (stderr) वर्णनकर्ता दायर करने के लिए 1 (stdout) पुनर्निर्देश – Sjoerd

159

दोनों रीडायरेक्ट करने के लिए सबसे सरल वाक्य रचना है:

command &> logfile 

आप अधिलेखित के बजाय फाइल करने के लिए संलग्न करने के लिए करना चाहते हैं:

command &>> logfile 
+3

यह सुनिश्चित नहीं है कि यह ऑपरेटर कब जोड़ा गया था लेकिन यह बैश के पुराने संस्करणों में उपलब्ध नहीं हो सकता है। ऐसा लगता है कि मेरी मशीन पर काम कर रहा है जो जीएनयू बैश v3.2.48 चलाता है। –

+7

@CostiCiudatu & >> ऑपरेटर मैक ओएस एक्स में काम नहीं कर रहा है; मैट के समाधान इमो का उपयोग करने के लिए सुरक्षित। –

+4

@ जेम्स फेनेल आप सही हैं, मुझे इसके बारे में पता नहीं था। मैंने स्वीकार किए गए उत्तर को उखाड़ फेंक दिया :) –

1

command 2>file यहाँ 2की फ़ाइल वर्णनकर्ता के लिए खड़ा है का उपयोग करें stderr। तुम भी 2 के बजाय 1 उपयोग कर सकते हैं ताकि stdout 'फ़ाइल'