Zsh এর সময়ের আউটপুট ফর্ম্যাটটি পরিবর্তন করুন


19

আমি স্যুইচ করেছি zsh। যাইহোক, timeবিল্টিন কমান্ডটি যে কমান্ডটি নির্ধারণ করে তার সময়সীমাটি কীভাবে আউটপুট করে তা আমি সত্যিই পছন্দ করি না । আমি অনেকটা bashস্টাইল আউটপুট পছন্দ করি । কেউ কীভাবে এটিকে স্যুইচ করবেন?

Zsh:

[casqa1:~/temp]$ time grep foo /dev/null
/usr/local/gnu/bin/grep --color -i foo /dev/null  0.00s user 0.00s system 53% cpu 0.004 total

ব্যাশ:

[casqa1:~/temp]$ bash
casqa1.nyc:~/temp> time grep foo /dev/null

real        0.0
user        0.0
sys         0.0

ধন্যবাদ,

/ YGA

উত্তর:


29

এটি মোটামুটি কাছাকাছি:

$ TIMEFMT=$'\nreal\t%E\nuser\t%U\nsys\t%S'

$ time sleep 1

real    1.01s
user    0.00s
sys     0.00s

5
আমার প্রস্তাবিত সম্পাদনাটি 2-1-এ প্রত্যাখ্যান করা হয়েছিল। আদর্শভাবে, ফর্ম্যাটটি হওয়া উচিত TIMEFMT=$'\nreal\t%*E\nuser\t%*U\nsys\t%*S'*পতাকার তাদের প্রতি ব্যাশ যেমন ঘন্টা / মিনিট, পরিবর্তে শুধু সেকেন্ডের হিসাবে বিন্যাসে গুলি। আরও তথ্য TIMEFMT এখানে
স্পারহাক

8

অন্য বিকল্পটি হ'ল বিল্টিন কমান্ডটি অক্ষম করা এবং আপনার অপারেটিং সিস্টেমের দ্বারা প্রদত্ত সময় বাইনারি ব্যবহার করা। আমার মধ্যে নিম্নলিখিত রয়েছে .zshrc:

disable -r time       # disable shell reserved word
alias time='time -p ' # -p for POSIX output

এসটিডিআরআর এ সময় আউটপুট।


4

শুধু একটি ছোট ডেনিস উইলিয়ামসনের খুব দরকারী উত্তর ( "মোটামুটি বন্ধ" অংশ) সংক্রান্ত স্পষ্টতা: ব্যাশ এর বিল্ট-ইন timeআউটপুট stderr, যখন zsh এর আউটপুট stdout

এই আদেশটি পার্থক্যটি বর্ণনা করতে পারে: time (echo abc) 2>/dev/null

ব্যাশে এটি আউটপুট দেয়:

    $ time (echo abc) 2>/dev/null
    abc

Zsh এ, প্রস্তাবিত TIMEFMT ভেরিয়েবল সহ:

    $ time (echo abc) 2>/dev/null
    abc

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