Dalam ksh
, bash
dan zsh
, time
bukan perintah (builtin atau tidak), itu kata reserved dalam bahasa seperti for
atau while
.
Ini digunakan untuk mengatur waktu pipa 1 .
Di:
time for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
Anda memiliki sintaks khusus yang memberi tahu shell untuk menjalankan saluran pipa itu:
for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
Dan melaporkan statistik waktu untuk itu.
Di:
time cmd > output 2> error
Ini sama, Anda waktu yang cmd > output 2> error
perintah, dan statistik waktu masih terus stderr shell.
Anda membutuhkan:
{ time cmd > output 2> error; } 2> timing-output
Atau:
exec 3>&2 2> timing-output
time cmd > output 2> error 3>&-
exec 2>&3 3>&-
Untuk stderr shell yang akan diarahkan ke timing-output
sebelum waktu membangun (sekali lagi, bukan perintah ) digunakan (di sini ke waktu cmd > output 2> error 3>&-
).
Anda juga dapat menjalankan time
konstruk tersebut dalam subkulit yang stderrnya dialihkan:
(time cmd > output 2> error) 2> timing-output
Tapi subkulit itu tidak diperlukan di sini, Anda hanya perlu stderr untuk diarahkan pada saat time
konstruksi dipanggil.
Sebagian besar sistem juga memiliki time
perintah. Anda dapat memanggil yang itu dengan menonaktifkan time
kata kunci. Yang perlu Anda lakukan adalah mengutip kata kunci itu, entah bagaimana, sebagai kata kunci, hanya dikenali saat harfiah.
'time' cmd > output 2> error-and-timing-output
Namun berhati-hatilah formatnya mungkin berbeda dan stderr keduanya time
dan cmd
akan digabung menjadi error-and-timing-output
.
Juga, time
perintah, sebagai lawan time
konstruk tidak dapat mengatur waktu pipa atau perintah majemuk atau fungsi atau builtin shell ...
Jika itu adalah perintah builtin, itu mungkin bisa mengatur waktu fungsi atau builtin, tetapi tidak bisa mengatur waktu pengalihan atau jalur pipa atau perintah majemuk.
1 Catatan yang bash
memiliki (apa yang dapat dianggap sebagai) bug di mana time (cmd) 2> file
(tetapi tidak time cmd | (cmd2) 2> file
misalnya) mengarahkan kembali output waktu kefile
time
kata kunci shell, atau/usr/bin/time
. Mungkin ada beberapa set deskriptor yang terlibat di sini (shell, dan yang dilampirkan pada suatutime
proses). Dan jangan lupa tentang yang tersirat dalam()
subkulit. ( menunggu spesialis bash : p)