समय 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