मैं केवल stderr को पुनर्निर्देशित कैसे कर सकता हूं?


13

मुझे ऐसा करने में थोड़ी परेशानी हो रही है। मुझे संकलित .java फ़ाइल चलाने और त्रुटि नामक फ़ाइल पर केवल stderr पुनर्निर्देशित करने की आवश्यकता है। तो .java फ़ाइल का नाम javaProgram.java है।

यही मैंने कोशिश की है:

java javaProgram 2> error

हालाँकि जब मैं

cat error

ऐसा प्रतीत होता है कि वहाँ सामान है, तब भी जब मुझे इस तथ्य के लिए पता है कि विशिष्ट .java फ़ाइल में कोई त्रुटि नहीं है। क्या मुझसे कुछ गलत हो रही है? मैं चाहता हूं कि यह त्रुटि फ़ाइल प्रदर्शित हो, और कुछ भी नहीं।

जवाबों:


16

आपका पहला प्रयास सही था; 2>filenameयह है कि आप किस तरह से स्ट्रीडर को पुनर्निर्देशित करते हैं। यह ऐसा हो सकता है कि आपका प्रोग्राम stderr के लिए कुछ गैर-त्रुटि लिख रहा है, या java प्रोग्राम अन्य प्रोग्राम चला रहा है जो stderr पर आउटपुट करता है।


1

सरल उत्तर यह है कि यह संभव नहीं है। डायग्नोस्टिक आउटपुट लिखने के लिए मानक त्रुटि का उपयोग किया जाता है और यह निर्धारित करने के लिए अनुप्रयोगों पर निर्भर है कि डायग्नोस्टिक / त्रुटि आउटपुट क्या है। यह POSIX मानक के अनुसार है ।


2
यदि आप POSIX युक्ति का हवाला देने जा रहे हैं, तो कृपया एक विशिष्ट अनुभाग का हवाला दें न कि पूरे दस्तावेज का। यह बहुत बड़ा है।
जोर्डनम

चूंकि POSIX में फाइल को रीडायरेक्ट करना संभव नहीं है? आपको उसके लिए एक वास्तविक उद्धरण प्रदान करना होगा।
l0b0

1
@ l0b0 जो Jeight नहीं कह रहा है। यह तय करना है कि STDOUT में क्या जाता है और STDERR में क्या जाता है; उदाहरण के लिए, एसटीडीयूएसटी में सब कुछ अलग करना संभव होगा, और फिर एसटीडीआर को पुनर्निर्देशित करने का कोई प्रभाव नहीं होगा। या, इस मामले में, यह संभव है (और मानक अभ्यास) कुछ चीजें डाल करने के लिए जो STDERR में सख्ती से त्रुटियां नहीं हैं। अन्य डायग्नोस्टिक्स से त्रुटियों को पार्स करने का एकमात्र तरीका यह होगा कि क्या त्रुटियां 'ERROR:' या कुछ और के साथ चिह्नित हैं। एक वर्बोसिटी स्विच हो सकता है जो मदद कर सकता है, लेकिन यह प्रोग्राम-विशिष्ट है।
evilsoup 11

ओपी ने दो अलग-अलग समस्याओं का सामना किया: "त्रुटि नामक एक फ़ाइल के लिए केवल स्ट्रीडर को पुनर्निर्देशित करें" और "मैं चाहता हूं कि यह त्रुटि फ़ाइल प्रदर्शित करें त्रुटियां हैं, कुछ और नहीं।" इसका पहला भाग निश्चित रूप से असंभव नहीं है, यह मेरी बात है।
l0b0

@ l0b0 आपको यह पीछे की ओर मिला है। ओपी निश्चित रूप से स्टीडर को एक फ़ाइल में पुनर्निर्देशित कर सकता है जिसे त्रुटि कहा जाता है। वह यह नहीं चुन सकता है कि जावा स्टॉडर के रूप में क्या आउटपुट करता है क्योंकि स्टॉडर की सामग्री एप्लिकेशन द्वारा नियंत्रित होती है और उपयोगकर्ता द्वारा नहीं। वह जो कर सकता है वह उस फाइल को टटोलना है जो वास्तविक त्रुटि संदेशों के लिए stderr पास की गई थी।
जियात
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.