दो कार्यक्रमों से पुन: प्रेषित करना


9

मैं C ++ कोड (prog2) पर एक मेमोरी चेक टूल (prog1) चला रहा हूं, जो दोनों मुझे एक विशाल और विस्तृत आउटपुट देते हैं। कुछ कीड़ों का पीछा करने के लिए मुझे इस आउटपुट को फ़ाइल में सहेजने की आवश्यकता है।

मैंने स्टडआउट को एक फ़ाइल पर पुनर्निर्देशित करने की कोशिश की:

prog1 prog2 > outfile.txt

लेकिन यह मुझे एक फाइल देता है जिसमें prog2 का आउटपुट है, जबकि prog1 का आउटपुट अभी भी टर्मिनल पर जा रहा है।

किसी को यह निर्दिष्ट करने का एक तरीका पता है कि मैं किसी फ़ाइल पर जाने के लिए आउटपुट चाहता हूं? पसंद है (prog1 prog2) > outfile.txt?

जवाबों:


19

एक अच्छा मौका है जो prog1मानक त्रुटि पर अपना आउटपुट लिख रहा है। आप दोनों आउटपुट को एक ही फाइल के साथ रीडायरेक्ट कर सकते हैं

prog1 prog2 > outfile.txt 2>&1

या आप के साथ आउटपुट को विभाजित कर सकते हैं

prog1 prog2 > outfile.txt 2> errors.txt

यह अलग-अलग कार्यक्रमों के आउटपुट को अलग नहीं करता है , यह आउटपुट चैनलों को अलग करता है। देखें कि शेल के नियंत्रण और पुनर्निर्देशन ऑपरेटर क्या हैं? ब्योरा हेतु।

यदि आप इसके prog1दस्तावेज़ीकरण को देखते हैं, तो आपको इसके आउटपुट को इसके बजाय नामांकित फ़ाइल में संग्रहीत करने का विकल्प मिल सकता है। उदाहरण के लिए strace,

strace -o strace.txt prog2 > outfile.txt

straceमें आउटपुट को स्टोर करेगा strace.txt, और मानक आउटपुट में सब कुछ लिखा है outfile.txt


5
2>&1के बाद जाना है > outfile.txt। पुनर्निर्देश का मामला मायने रखता है।
बरमार

भविष्य के पाठकों के लिए ध्यान दें: @ बरमार बिल्कुल सही है कि पुनर्निर्देश का सापेक्ष क्रम एक-दूसरे के संबंध में महत्वपूर्ण है। कम परिचित लोगों के लिए, प्रोग्राम तर्कों के संबंध में पुनर्निर्देशन का क्रम केवल कुछ मामलों में मायने रखता है। शुरुआत और अंत आम स्थान हैं, लेकिन मध्य कभी-कभी होता है (कृपया ऐसा न करें)। echo >&2 hello worldके बराबर है echo hello world >&2। अधिक जानकारी यहाँ: tldp.org/LDP/abs/html/io-redirection.html
Morgen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.