Bekerja dengan time
perintah, saya menemukan situasi di mana saya harus menggunakan perintah waktu built-in time
daripada eksternal GNU /usr/bin/time
. Jadi, bagaimana saya bisa melakukan ini? Saya melihat suatu tempat yang menggunakan enable
dan / ataucommand
akan membantu, tetapi mereka tidak.
Ini adalah kasus penggunaan:
watch "time ls"
yang menggunakan /usr/bin/time
perintah eksternal , yang tidak saya inginkan! Ini terjadi ketika time
menjalankan fungsi bash internal ketika saya menjalankan time ls
terminal, seperti ini:
$ time ls
Harap dicatat bahwa permintaan sebaliknya telah dijawab di sini:
Ada banyak perbedaan dengan dua perintah. Internal time
lebih tepat (yang saya inginkan), tetapi perintah eksternal memiliki lebih banyak opsi (yang saya tidak perlu).
watch 'bash -c "builtin time ls"'
mungkin?builtin time
harus melakukan trik.time
bukan builtin inbash
, ini adalah kata khusus dari bahasa sehingga Anda dapat mengatur waktu pipa (sepertitime foo | bar
) atau perintah majemuk (sepertitime for i in...;done
)Jawaban:
Secara default,
watch
jalankan perintah Anda dengan/bin/sh -c '...'
begitu output yang Anda lihat adalah bagaimana/bin/sh
menginterpretasikantime
perintah. Anda/bin/sh
tampaknya tidak memiliki builtin sebuahtime
.Untuk menjalankan perintah dengan shell yang berbeda, gunakan
-x
opsi untuk menyingkirkan default, kemudian tambahkan permintaan eksplisit Anda sendiri dari shell yang builtin yang Anda inginkan.Tidak peduli bagaimana Anda menjalankan
watch
, perintah yang Anda tonton bukanlah anak dari shell yang menjalankanwatch
perintah, sehingga pengaturan shell tidak secara langsung relevan.sumber