Ini mungkin pertanyaan pemula, tapi saya tidak mengerti bagaimana ini dikonfigurasikan dan mengapa format output dari time
perintah berbeda dalam dua kasus ini:
jika digunakan via time
, output adalah tiga baris dengan info dasar
$ time sleep 1
real 0m1.003s
user 0m0.000s
sys 0m0.000s
maka saya bisa memeriksa biner mana yang digunakan
$ which time
/usr/bin/time
dan panggil langsung untuk mendapatkan output dalam format yang sama sekali berbeda, dengan lebih banyak info
$ /usr/bin/time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k
0inputs+0outputs (0major+77minor)pagefaults 0swaps
tidak ada alias yang terkait dengan time
$ alias | grep time
$
Saya sedang berlari Ubuntu 16.04
.
which
pada dasarnya tidak berguna ...Jawaban:
Yang pertama adalah
bash
kata kunci bawaan sendiritime
(dikompilasi denganbash
), dan yang kedua adalah executable eksternaltime
(/usr/bin/time
, datang dengantime
paket).Selain itu,
which
tidak dapat menampilkan perintah atau kata kunci bawaan Shell karena hanya menelusuriPATH
, Anda perlu menggunakannyatype
. Menjadi shell builtin itu sendiri, jugatype
dapat memeriksa entitas internal shell (dan jugaPATH
), sehingga Anda dapat melihat perbedaannya dengan:Sini:
Yang pertama akan dieksekusi jika Anda hanya menggunakan
time
. Anda juga bisa mendapatkan yang sedang dieksekusi hanya dengan menggunakantype
(tanpa-a
):The
-a
memberitahutype
untuk mencari di entitas internal yang shell dan juga diPATH
yaitu mencari di semua kemungkinan sumber.Jika karena alasan tertentu Anda memerlukan yang eksternal, gunakan salah satu dari:
sumber
which
tidak mempertimbangkan builtin? Dan saya harus selalu memeriksatype -a
dulu. Sebenarnya, ini tampaknyatype
lebih unggul daripadawhich
karena itu mengeluarkan lokasi/usr/bin/time
jugawhich
gunanya untuk itu?type
memang lebih unggul --- jika Anda menggunakan bash. Cangkang lain mungkin tidak memilikitype
bulitin, atautime
builtin.time
untuk menjadi eksternal saja tetapi tidaktype
,type
tersedia di semua shell yang sesuai dengan POSIX.Perbedaan lain antara utilitas builtin dan eksternal adalah, bahwa built-in Bash
time
akan mengatur waktu pipeline atau panggilan ke fungsi shell (tampaknya bahkan loop, tetapi manual tampaknya tidak menjanjikan itu). Eksternaltime
tidak bisa, karena berada di luar shell, tidak tahu tentang kode di sekitarnya.Sementara waktu ditentukan dalam standar, itu tidak ditentukan bagaimana harus bertindak dalam pipa, sehingga implementasi internal yang lebih kuat seperti ini dimungkinkan.
sumber