বাহ্যিক কমান্ডের পরিবর্তে অন্তর্নির্মিত "সময়" কমান্ড ব্যাশে ব্যবহার করা


12

timeকমান্ডটি নিয়ে কাজ করে , আমি এমন একটি পরিস্থিতি পেলাম যেখানে আমার timeবাহ্যিক জিএনইউ সময় কমান্ডের চেয়ে বিল্ট-ইন ব্যবহার করা উচিত /usr/bin/time। তো, আমি কীভাবে এটি করতে পারি? আমি কোথাও দেখেছি যে ব্যবহার করে enableএবং / অথবা commandসাহায্য করবে, কিন্তু তারা তা করেনি।

এটি ব্যবহারের ক্ষেত্রে:

watch "time ls"

যা বাহ্যিক /usr/bin/timeকমান্ড ব্যবহার করে , যা আমি চাই না! timeঅভ্যন্তরীণ বাশ ফাংশনটি যখন আমি time lsটার্মিনালে চালিত করি তখন এটি ঘটে :

$ time ls

দয়া করে নোট করুন যে ঠিক বিপরীত অনুরোধটির উত্তর এখানে দেওয়া হয়েছে:

দুটি কমান্ডের সাথে অনেক পার্থক্য রয়েছে। অভ্যন্তরীণ timeআরও সুনির্দিষ্ট (যা আমি চাই) তবে বাহ্যিক কমান্ডের আরও বিকল্প রয়েছে (যা আমার প্রয়োজন হয় না)।


watch 'bash -c "builtin time ls"'সম্ভবত?
গ্লেন জ্যাকম্যান

1
দেখতে এখানে কিভাবে builtins ব্যবহার করতে ব্যাশ বলপূর্বক উপর, পেত্র Utzl দ্বারা ANSWER2 দেখুন: builtin timeকৌতুক করতে হবে।
ফিক্সিম্যান

2
@ ফিক্সিম্যান, timeএটি কোনও অন্তর্নির্মিত bashভাষা নয়, এটি ভাষার সংরক্ষিত শব্দ যাতে আপনি পাইপলাইনগুলি (যেমন time foo | bar) বা যৌগিক কমান্ডগুলি (যেমন time for i in...;done) সময় করতে পারেন
স্টাফেন চেজেলাস

উত্তর:


13

ডিফল্টরূপে, watchআপনার কমান্ডটি চালায় /bin/sh -c '...'যাতে আপনি যে আউটপুট দেখেন তা হ'ল কমান্ডটিকে কীভাবে /bin/shব্যাখ্যা করে time। আপনার /bin/shআপাতদৃষ্টিতে কোনও বিল্টিন নেই time

ভিন্ন শেল দিয়ে কমান্ডটি চালাতে, ডিফল্টর -xহাত থেকে মুক্তি পাওয়ার জন্য বিকল্পটি ব্যবহার করুন , তারপরে শেলটির নিজের স্পষ্ট স্বাক্ষরটি যুক্ত করুন যা আপনি চাইছেন in

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

আপনি যেভাবে চালান তা নির্বিশেষে watch, আপনি যে কমান্ডটি দেখছেন তা হ'ল কমান্ডটি চালানো শেলের শিশু নয় watch, যাতে শেলের সেটিংস সরাসরি প্রাসঙ্গিক হয় না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.