Wednesday 15 August 2012

linux - Grep time command output -


समय ls का उपयोग करके, मेरे पास निम्न आउटपुट है:

  $ समय एलएस-एल कुल 2 -आरडब्ल्यूएक्स ------ + 1 दोस्तों कोई नहीं 97 जून 23 08:59 स्थान-टी-आर-आर-आर-+ 1 दोस्तों कोई नहीं 10 जून 23 09:06 असली स्वागत 0m0.040s उपयोगकर्ता 0m0.000s sys 0m0.031s   

अब, जब मैं grep केवल वास्तविक मूल्य रेखा की कोशिश करता हूं वास्तविक परिणाम है:

  $ समय ls -l | Grep असली असली 0m0.040s उपयोगकर्ता 0m0.000s sys 0m0.031s   

मेरा सवाल है, आउटपुट के रूप में केवल वास्तविक मूल्य कैसे प्राप्त करें? इस मामले में, 0m0.040s

समय इसकी आउटपुट को stderr लिखता है, इसलिए आपको stdout के बजाय पाइप स्टेडरर की जरूरत है। लेकिन यह भी याद रखना महत्वपूर्ण है कि समय बैश के वाक्यविन्यास का हिस्सा है, और यह एक संपूर्ण पाइपलाइन का समय है। नतीजतन, आपको पाइप लाइन को ब्रेसिज़ में लपेट कर, या इसे एक सबशेल्ड में चलाने की आवश्यकता है:

  $ {time ls -l & gt; / dev / null; } 2 & gt; और 1 | बैज v4.0 (संभवत: लिनक्स वितरण पर सार्वभौमिक लेकिन मैक ओएस एक्स पर मानक नहीं है) के साथ असली वास्तविक 0m0.005s   

, आप | & amp; पाइप दोनों stdout और stderr :

  {समय ls -l & gt; / dev / null; } | & Amp; Grep real   

वैकल्पिक रूप से, आप समय उपयोगिता का उपयोग कर सकते हैं, जो आउटपुट स्वरूप का नियंत्रण देता है। मेरे सिस्टम पर, उस सुविधा को / usr / bin / time में पाया जाता है:

  / usr / bin / time -f% e ls -l & gt; / dev  समय  उपयोगिता पर अधिक विवरण के लिए / null   

आदमी का समय

No comments:

Post a Comment