समय का आउटपुट स्वरूप इस बात पर निर्भर करता है कि मैं इसे कैसे कहता हूं


14

यह एक नौसिखिया का सवाल हो सकता है, लेकिन मुझे समझ नहीं आता कि यह कैसे कॉन्फ़िगर किया जाता है और timeइन दो मामलों में कमांड का आउटपुट प्रारूप अलग क्यों है :

यदि के माध्यम से उपयोग किया जाता है time, तो आउटपुट मूल जानकारी के साथ तीन पंक्तियाँ हैं

$ time sleep 1

real    0m1.003s
user    0m0.000s
sys     0m0.000s

तब मैं जांच कर सकता हूं कि कौन से बाइनरी का उपयोग किया जाता है

$ which time
/usr/bin/time

और इसे पूरी तरह से अलग प्रारूप में आउटपुट प्राप्त करने के लिए सीधे कॉल करें, बहुत अधिक जानकारी के साथ

$ /usr/bin/time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k
0inputs+0outputs (0major+77minor)pagefaults 0swaps

इससे संबंधित कोई उपनाम नहीं हैं time

$ alias | grep time
$ 

मैं दौड़ रहा हूं Ubuntu 16.04


यही कारण है कि whichमूल रूप से बेकार है ...
बाकूरी

जवाबों:


23

पहला एक bashखुद का बनाया हुआ कीवर्ड है time( bashदूसरे के साथ संकलित ), और दूसरा एक बाहरी निष्पादन योग्य है time( पैकेज के /usr/bin/timeसाथ आता है time)।

इसके अलावा, whichशेल के अंतर्निहित कमांड या कीवर्ड नहीं दिखा सकते हैं क्योंकि यह सिर्फ खोज करता है PATH, आपको इसके लिए उपयोग करने की आवश्यकता typeहै। शेल शेल के रूप में स्वयं होने के कारण, typeशेल की आंतरिक संस्थाओं (और भी PATH) के लिए जाँच कर सकते हैं, इसलिए आप अंतर को इसके द्वारा देख सकते हैं:

type -a time

यहाँ:

$ type -a time
time is a shell keyword
time is /usr/bin/time

यदि आप अभी उपयोग करते हैं तो पहले वाले को निष्पादित किया जाएगा time। आप यह भी प्राप्त कर सकते हैं जो केवल type(बिना -a) का उपयोग करके निष्पादित किया जा रहा है :

type time

-aबताता है typeखोल के आंतरिक सत्ता के बारे में खोज करने के लिए है और यह भी में PATHयानी सभी संभव स्रोतों में खोज करते हैं।

यदि किसी कारण से आपको बाहरी की आवश्यकता है, तो निम्न में से किसी एक का उपयोग करें:

\time
"time"
'time'
command time

आह, मैं देख रहा हूँ, तो whichनहीं बनता है? और मुझे हमेशा type -aपहले जांच करनी चाहिए । वास्तव में, ऐसा लगता typeहै whichकि यह बेहतर है क्योंकि यह स्थान के /usr/bin/timeरूप में अच्छी तरह से
xxa

@xaxa हाँ, मेरे संपादन की जाँच करें।
हेमायल

विस्तृत उत्तर के लिए धन्यवाद! whichतब के लिए क्या उपयोगी है?
xaxa

1
@xaxa typeवास्तव में श्रेष्ठ है --- यदि आप बैश का उपयोग कर रहे हैं। एक और शेल में या तो typeबुलिटिन, या बिलिन नहीं हो सकता है time
jpaugh

2
@jpaugh बिल्कुल सही नहीं है। POSIX timeकेवल बाहरी होने की अनुमति देता है लेकिन नहीं type, typeसभी POSIX अनुरूप शेल में उपलब्ध है।
heemayl

4

बिलिन और एक्सटर्नल यूटिलिटीज के बीच एक और अंतर यह है कि बैश के बिलिन शेल कार्यों को time पूरा करने या कॉल करने का समय देगा (जाहिरा तौर पर यहां तक ​​कि लूप भी, लेकिन मैनुअल ऐसा वादा नहीं करता है)। timeशेल के बाहर होने के बाद से बाहरी , आसपास के कोड के बारे में नहीं जानता है।

bash$ time echo blah | sleep 3
real    0m3.002s
...
bash$ /usr/bin/time echo blah | sleep 3
0.00user 0.00system 0:00.00elapsed ?%CPU 
...
bash$ time for x in 1 2 3 ; do sleep 1 ; done
real    0m3.006s
...

जब समय मानक में निर्दिष्ट होता है, तो यह अनिर्दिष्ट हो जाता है कि इसे पाइप लाइन में कैसे काम करना चाहिए, इसलिए इस तरह का अधिक शक्तिशाली आंतरिक कार्यान्वयन संभव है।

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