আমি কীভাবে "টাইম" কমান্ডের আউটপুট পুনর্নির্দেশ করতে পারি?


95

আমি টাইম কমান্ডের আউটপুট পুনর্নির্দেশের চেষ্টা করেছি, কিন্তু আমি পারিনি:

$time ls > filename
real    0m0.000s
user    0m0.000s
sys     0m0.000s

ফাইলটিতে আমি lsকমান্ডের আউটপুট দেখতে পাচ্ছি, এটির নয় time। দয়া করে ব্যাখ্যা করুন, আমি কেন করতে পারি না এবং কীভাবে এটি করব।


4
আমার মনে হয় সুপারউজারে থাকা উচিত।
মেনিমেথ

4
এই প্রশ্নের উত্তরটি কেবল প্রোগ্রামারদের জন্যই নয়, অন্যান্য শক্তি-ব্যবহারকারীদের জন্যও আগ্রহী: superuser.com
নিউমেন্থ

উত্তর:


105

আপনি সময় আউটপুট ব্যবহার করে পুনর্নির্দেশ করতে পারেন,

(time ls) &> file

কারণ আপনাকে একক কমান্ড হিসাবে (টাইম এলএস) নেওয়া দরকার যাতে আপনি বন্ধনী ব্যবহার করতে পারেন।


4
হ্যাঁ নির্ভর করে জরিমানা, তবে প্রশ্ন হল তারা কীভাবে এটি করেছে?
আবুব্যাকার

4
টাইম কমান্ড আর্গুমেন্টকে কমান্ড হিসাবে গ্রহণ করবে। তবে প্রথম বন্ধনী একটি কমান্ড হিসাবে গ্রুপ করবে। উদাহরণস্বরূপ: সময় ls> file1.txt যুক্তিতে, 0 = সময় 1 = "ls> file1.txt"
সানেশেশ

8
এবং টাইম কমান্ড স্ট্ডার আউটপুট প্রিন্ট করে। সুতরাং আপনি (সময় ls) 2> ফাইল
সানগেশ

5
&>দয়া করে স্পষ্টতা , আমি এইগুলি সম্পর্কে কোথায় জানতে পারি?
হ্যালো_এখানে_আরডি

4
@hello_there_andy এর &>fileসাথে সাদৃশ্যপূর্ণ >file 2>&1। এটি স্টডআউট এবং স্টাডার উভয়কেই নির্দেশনা দেয়।
কেটিবিজ

132

সাব শেল আরম্ভ করার দরকার নেই। একটি কোড ব্লক ব্যবহার করুন পাশাপাশি করবে।

{ time ls; } 2> out.txt

বা

{ time ls > /dev/null 2>&1 ; } 2> out.txt

4
সম্মত, সেরা উত্তর। এলএস ফলাফলগুলি খালি করার জন্য এবং কেবল সময় পাওয়ার বিকল্প দেয়। আপনাকে ভূস্টডোগ 74
rd42

4
এটি এআইএক্স-এর সাথে কাজ করেছিল যখন কিছুই "হোস্টেন্ট" কমান্ডের আউটপুটটিকে পুনর্নির্দেশ করতে পারে না। ধন্যবাদ!
হুগো

4
2>দয়া করে স্পষ্টতা । এগুলি আমি কোথায় শিখতে পারি?
হ্যালো_এখানে_আরডি

4
আমি একই সাথে>> এবং 2> উভয়ই চাইলে কীভাবে করব?
জর্জি ফার্নান্দেজ-হিডালগো

25

কমান্ড সময় এটি আউটপুটটি STDERR এ পাঠায় (STDOUT এর পরিবর্তে)। এর কারণ হ'ল কমান্ডটি সাধারণত সময়ের সাথে সম্পাদিত হয় (এই ক্ষেত্রে ls) STDOUT এ আউটপুট দেয়।

আপনি যদি সময়ের আউটপুট ক্যাপচার করতে চান তবে টাইপ করুন:

(time ls) 2> filename

এটি কেবল সময়ের আউটপুট ক্যাপচার করে তবে ls এর আউটপুটটি কনসোলে স্বাভাবিক হয়। যদি আপনি উভয়ই একটি ফাইলের ক্যাপচার করতে চান তবে টাইপ করুন:

(time ls) &> filename

2> এসটিডিআরআর পুনর্নির্দেশ করে, &> উভয়ই পুনর্নির্দেশ করে।


4
এই উত্তরটি আসলে উত্তর দেয় যে ওপির পুনর্নির্দেশ কেন কাজ করছে না, যা ওপি জিজ্ঞাসা করছিল of অন্য কেউ এটিকে সম্বোধন করে না।
নিউট্রনস্টার

কিভাবে এটি দিয়ে অন্য একটি প্রক্রিয়া পাইপ হবে?
পল

10

সময় শেল অন্তর্নির্মিত এবং আমি এটি পুনর্নির্দেশের উপায় আছে কিনা তা নিশ্চিত নই। তবে আপনি /usr/bin/timeপরিবর্তে ব্যবহার করতে পারেন , যা অবশ্যই কোনও আউটপুট পুনঃনির্দেশগুলি গ্রহণ করে।


/ usr / bin / ফাইলের নাম ম --output সময়
মোটা ব্যক্তি

4
অন্তর্নির্মিত সময় আউটপুট-পুনঃনির্দেশের সাথে ভাল কাজ করে। এটি কেবল STDERR এ আউটপুট দেয়, STDOUT এ নয়।
মেনিমেথ

সমস্যাটি হ'ল বিল্টিন কমান্ডগুলি শেল পরিবেশের মধ্যেই চালিত হয়, সাব-শেল নয় a যেহেতু আপনার শেলের স্টাডার সাধারণত টার্মিনালের সাথে যুক্ত থাকে তাই পুনঃনির্দেশ কিছুই করবে না। অন্তর্নির্মিত সময়টিকে পুনর্নির্দেশ করতে, আমি বিশ্বাস করি যে আপনাকে এমন কিছু করতে হবে bash time mycmd 2>file। বা /usr/bin/timeযেমন কল করা হয়েছে তেমন কল করুন ।
কেটিবিজ

: আপনি সম্পূর্ণ পাথ উল্লেখ না করে অ বিল্ট-ইন ব্যবহার করতে পারেন stackoverflow.com/questions/29540540/...
সিরো Santilli郝海东冠状病六四事件法轮功

5

পুনঃনির্দেশটি যে কাজ করে বলে মনে হচ্ছে না timeতা হ'ল এটি কোনও বাশ সংরক্ষিত শব্দ (কোনও বিল্টিন নয়!) যখন পাইপলাইনের সামনে ব্যবহৃত হয়। বাশ (1):

সময় সংরক্ষিত শব্দটি যদি পাইপলাইনটির আগে থাকে, তবে পাইপলাইনটি বন্ধ হয়ে গেলে এর প্রয়োগের মাধ্যমে গ্রাসিত ব্যবহারকারী এবং সিস্টেমের সময়টি রিপোর্ট করা হয়।

সুতরাং, আউটপুট পুনঃনির্দেশ করতে time, হয় কোঁকড়া ধনুর্বন্ধনী ব্যবহার করুন:

{ time ls; } 2> filename

অথবা কল করুন /usr/bin/time:

/usr/bin/time ls 2> filename

4

আপনি যদি আউটপুট timeএবং কমান্ডটি মিশ্রিত করতে না চান । জিএনইউ সময়ের সাথে আপনি এই জাতীয় ব্যবহার করতে পারেন -o file:

/usr/bin/time -o tim grep -e k /tmp 1>out 2>err

সময় timআউটপুট হয়, outএবং errstdout এবং stderr থেকে grep


0

আমি পরীক্ষার জন্য ব্রেসগুলির সাথে স্টডআউট এবং স্টডার পদ্ধতির পুনঃনির্দেশ ব্যবহার করি।
দ্য&>>rptএই প্রতিনিধিত্ব করে>>rpt 2>&1 কিন্তু ছোট।
বন্ধনীগুলি বর্তমান শেলটিতে একটি আদেশ (গুলি) চালায় ute দেখুন: মানুষ বাশ

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