Di mana `time` menampilkan hasilnya?


2

Saya di Ubuntu.

Lari time tampaknya menampilkan hasilnya ke sesuatu selain STDOUT atau STDERR. Inilah mengapa saya pikir begitu:

[siminm@amide ~]$ time echo hi
hi

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi >/dev/null 

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi 2>/dev/null 
hi

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi 2>&1 >/dev/null 

real    0m0.000s
user    0m0.000s
sys 0m0.000s
[siminm@amide ~]$ time echo hi &>/dev/null 

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

NAMUN

[siminm@amide ~]$ /usr/bin/time echo hi 2>/dev/null 
hi

Jawaban:


2

Shell Anda, yang mungkin bash, menyediakan perintah bawaan time. Ada juga program terpisah yang disebut time di /usr/bin/, yang ada di Anda $PATH. Perilaku keduanya berbeda. Jika Anda ingin konsistensi di semua konfigurasi, Anda harus menggunakan program ini /usr/bin/time bukannya bash builtin time.


Ketika saya berlari which time ia kembali /usr/bin/time
Mikhail

@Mikhail, apa type -a time memberi tahu Anda?
glenn jackman

@glenn, time is a shell keyword time is /usr/bin/time - ini cukup jelas sekarang. Terima kasih!
Mikhail

1

Anda selalu hanya mengarahkan output dari perintah Anda. Sejak waktu menulis ke stderr coba yang berikut ini:

(time ls >> /stdout/output/of/ls 2>> /stderr/output/of/ls) 2>> /output/of/time

Ini bagus! Saya tidak tahu Anda bisa membungkus fungsi dalam tanda kurung seperti itu
Mikhail

1

"waktu" output builtin pergi ke apa yang ditunjukkan stderr sebelum pengalihan bisa terjadi.

Perintah non builtin seperti / usr / bin / time tidak dapat mengesampingkan redirection seperti yang terjadi sebelum diluncurkan sehingga outputnya masuk ke stderr.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.