विंडोज कंसोल में ">" कमांड सभी संदेशों को एक फाइल पर रीडायरेक्ट क्यों नहीं करता है?


21

मैं sbt के साथ एक स्काला प्रोजेक्ट बनाने की कोशिश कर रहा हूं , इसलिए मैं एक कमांड चलाता हूं:

sbt clean test > log.log

जिसका अर्थ है कि कोई भी संदेश जो विंडोज़ कंसोल के लिए sbt टूल लिखता है उसे "log.log" फ़ाइल में लिखा जाना चाहिए। लेकिन कभी-कभी मुझे स्टैनट्रेस को कंसोल में लिखा जाता है और फाइल में नहीं:

C:\path>sbt clean test > log.log
java.lang.ExceptionInInitializerError
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
        at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
        at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
        at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
        at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
        at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassCastException: Class org.infinispan.configuration.parsing.Parser60 does not implement org.infinispan.configuration.parsing.ConfigurationParser

">" कमांड सभी संदेशों को एक फ़ाइल पर पुनर्निर्देशित क्यों नहीं करता है?

जवाबों:


35

आपने जो पेस्ट किया है वह कमांड स्टैंडर्ड आउटपुट (STDOUT) नहीं है, बल्कि कमांड (STDERR) का एरर आउटपुट है।

जब आप कमांड में "> output_file" जोड़ते हैं, तो आप केवल उस फ़ाइल में STDOUT को पुनर्निर्देशित कर रहे हैं, न कि STDERR।

यदि आप त्रुटियों को आउटपुट करना चाहते हैं, तो मानक आउटपुट के रूप में उसी फ़ाइल पर जाएं जिसका आपको उपयोग करने की आवश्यकता है

sbt clean test > log.log 2>&1

"2> और 1" क्या करता है, यह मानक आउटपुट परिणामों के समान स्थान पर आउटपुट त्रुटि के लिए कहता है।

आप भी कुछ ऐसा कर सकते हैं:

sbt clean test > log.log 2>error.log

यदि आप उन्हें अलग करना चाहते हैं, तो यह STDOUT को log.log, और STDERR को दूसरी फ़ाइल में आउटपुट करेगा।

कमांड पुनर्निर्देशक ऑपरेटरों के बारे में इसे देखें

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true


3
2>&1आपके उत्तर और 1<&2लिंक से क्या अंतर है ? मैंने हमेशा इसे अपने तरीके से देखा है, और दूसरा तरीका समझ में भी आता है ("आउटपुट" के बजाय "इनपुट" को पुनर्निर्देशित करना) लेकिन अन्यथा समान दिखाई देना), लेकिन दूसरी पसंद देखना दिलचस्प है।
जो

6
शब्दार्थ ... 2>&1यह कह रहा है कि STDERR से आउटपुट को उसी आउटपुट पर STDOUT के रूप में पुनर्निर्देशित किया जाना चाहिए। 1<&2कह रहा है कि STDERR से आउटपुट का उपयोग STDOUT के इनपुट के रूप में किया जाना चाहिए। दोनों एक ही परिणाम का उत्पादन करते हैं, और केवल वरीयता का मामला है
SeanC

ध्यान दें कि, आप करना होगा 2>&1 के बाद> log.log
smwikipedia
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.