timeকমান্ড-লাইনগুলি পার্স করার সময় বাশ বিল্ট-ইনকে একটি বিশেষ কেস হিসাবে বিবেচনা করে ।
যেমন ব্যাশ ম্যানপেজে পড়া যায়, টাইপ করা রেখাটি প্রথমে তালিকায় বিভক্ত:
pipeline ; pipeline
একটি পাইপলাইন যেখানে:
[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]
বা আমাদের ক্ষেত্রে, সহজভাবে:
time command
অর্থাত্ যদি সময় উপস্থিত থাকে তবে কমান্ডটিও উপস্থিত থাকতে হবে।
[একটি বিশেষ কেস রয়েছে যা timeএকটি নতুন লাইন অনুসরণ করার অনুমতি দেয় তবে এটি এখানে প্রয়োগ হয় না]
সুতরাং, আমাদের ক্ষেত্রে, আমাদের আছে:
time;date
দুটি পাইপলাইনে বিভক্ত:
1. time
2. date
এবং পাইপলাইন 1 ভালভাবে তৈরি হয় না, কারণ আমাদের timeকোনও আদেশ নেই। সুতরাং ত্রুটি।
নোট করুন যে কমান্ড-লাইন timeএখানে কাজ করে না:
$ /usr/bin/time;date
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
বাশ এটিকে প্রত্যাশা অনুযায়ী 2 টি পাইপলাইনে পার্স করে:
1. /usr/bin/time
2. date
এবং /usr/bin/timeতারপরে কোনও যুক্তি ছাড়াই চালাতে অস্বীকার করে। নোট করুন যে এটি /usr/bin/timeব্যাশ থেকে কোনও ত্রুটি নয় ত্রুটি।
ব্যাক-টিক কাজ করার কারণটি হ'ল ব্যাক-টিকটি timeপাইপলাইনের মধ্যে একটি বিশেষ উপাদান হিসাবে ব্যাখ্যা করা বন্ধ করে।
অর্থাত্ ব্যাক-টিক সহ:
`time`;date
এটি দুটি পাইপলাইন হিসাবে পার্স করা হয়েছে:
1. `time`
2. date
মনে রাখবেন যে আমাদের ক্ষেত্রে পাইপলাইনটি হ'ল:
[time] command
এবং প্রাথমিকভাবে সমস্যাটি ছিল আমাদের timeকোনও আদেশ ছিল না, যা অনুমোদিত নয়। তবে এখন আমাদের কেবল কমান্ডটি রয়েছে:
`time`
পূর্ববর্তী ছাড়াই time, যেহেতু ব্যাক-টিকগুলির অর্থ timeহ'ল আদেশ হিসাবে ব্যাখ্যা করা হয়, পূর্ববর্তী শব্দ হিসাবে নয়।
সুতরাং বাশ তার বিল্টিনটি timeকোনও আরগস ছাড়াই চালায় যা গ্রহণযোগ্য। এটি কোনও আউটপুট উত্পাদন করে না এবং আমরা কোনও ত্রুটি দেখতে পাই না।
মনে রাখবেন যে:
`time`
আসলে চালায় ফলাফলের এর timeবিল্ট-ইন, IE এটা রান যাই হোক না কেন timeবিল্ট-ইন stdout- এ তে উৎপন্ন হয়। কিন্তু যেহেতু timeনিজে থেকে স্টাডআউটকে কিছু লিখেন না, এটি কাজ করে বলে মনে হয়।
অবশেষে, এটি লক্ষ করা গেছে যে এটি কাজ করে:
time ; ; date
যা আমি ব্যাখ্যা করতে পারছি না, দুঃখের সাথে :)
time;dateবনাম উপর নির্ভর করেdate;time। পাইপলাইনটিbashশেষ এবংtimeআউটপুট দিয়ে উত্পন্ন সর্বশেষ চরটিতে এটি সমস্যা বলে মনে হচ্ছে । বিভিন্ন টার্মিনাল এমুলেটরগুলিতে পরীক্ষিত ফলাফল হ'ল : - [বাশ] $ তারিখ; সময় # [ঠিক আছে]; সময়; তারিখ # [ নোটক ] বাশ: অপ্রত্যাশিত টোকেনের নিকটে সিনট্যাক্স ত্রুটি `তারিখ '$ সময় # ত্রুটি কেবল ততই দেখা যায় না যে এটি যে কোনও তারিখের ফলাফল। - [সিএসএস] $ তারিখ; সময় # [ঠিক আছে] $ সময়; তারিখ # [ওকে] - [টিসিএসসি] $ তারিখ; সময় # [ওকে] $ সময়; তারিখ # [ঠিক আছে] - [কেএসআই] $ তারিখ; সময় # [ ঠিক আছে] $ সময়; তারিখ # [ঠিক আছে]