In ksh, bashve zsh, timebir komut (yerleşik veya değil), bu gibi dilde ayrılmış bir kelime değildir forya while.
Bir boru hattını zamanlamak için kullanılır 1 .
İçinde:
time for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
Kabuğa o boru hattını çalıştırmasını söyleyen özel bir sözdiziminiz var:
for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
Ve bunun için zamanlama istatistiklerini rapor edin.
İçinde:
time cmd > output 2> error
Bu, aynı konum oluyor zamanlamacmd > output 2> error komutu ve zamanlama istatistikler yine kabuk, standart hataya gidin.
Gerekenler:
{ time cmd > output 2> error; } 2> timing-output
Veya:
exec 3>&2 2> timing-output
time cmd > output 2> error 3>&-
exec 2>&3 3>&-
Kabuğun stderr'ının timing-outputzaman yapısından önce yeniden yönlendirilmesi için (yine komut değil ) (burada zaman zaman cmd > output 2> error 3>&-).
Bu timeyapıyı , stderr'sinin yeniden yönlendirildiği bir alt kabukta da çalıştırabilirsiniz :
(time cmd > output 2> error) 2> timing-output
Ancak bu alt kabuk burada gerekli değildir, sadece timeyapı çağrıldığında yönlendirilmek için stderr'a ihtiyacınız vardır .
Çoğu sistemde bir timekomut vardır. timeAnahtar kelimeyi devre dışı bırakarak bunu çağırabilirsiniz . Yapmanız gereken tek şey anahtar kelime olarak bir şekilde anahtar kelimenin sadece değişmez olarak tanındığını belirtmektir.
'time' cmd > output 2> error-and-timing-output
Ama biçimi farklıdır ve her ikisi stderr'si olabilir dikkat timeve cmdbirleştirilecek error-and-timing-output.
Ayrıca, timekomut, timeyapının aksine, boru hatlarını veya bileşik komutları veya işlevleri veya kabuk yerleşiklerini zamanlayamaz ...
Yerleşik bir komut olsaydı, işlev çağırmalarını veya yerleşikleri zamanlayabilir, ancak yeniden yönlendirmeleri veya boru hatlarını veya bileşik komutları zamanlayamazdı.
1 Not bash(NE olarak kabul edilebilir) bir hata , burada time (cmd) 2> file(ancak time cmd | (cmd2) 2> fileörneğin) zamanlama çıkış yönlendirirfile
time, kabuk anahtar kelimesi olup olmamasına bağlı olarak değişeceğini unutmayın/usr/bin/time. Burada çeşitli tanımlayıcılar olabilir (kabuğun ve birtimesürece bağlı olanlar ). Ve()alt kabuğun ima ettiği şeyleri unutmayalım . ( bir bash uzmanı bekliyor : p)