W ksh, basha zsh, timenie jest poleceniem (wbudowane lub nie), to słowo zarezerwowane w języku podobnego forlub while.
Służy do pomiaru czasu potoku 1 .
W:
time for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
Masz specjalną składnię, która każe powłoce uruchomić tę linię potoku:
for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
I zgłoś dla niego statystyki czasowe.
W:
time cmd > output 2> error
To ten sam, jesteś rozrządu na cmd > output 2> errorkomendę, a statystyki czasowe nadal iść na stderr przez powłokę.
Potrzebujesz:
{ time cmd > output 2> error; } 2> timing-output
Lub:
exec 3>&2 2> timing-output
time cmd > output 2> error 3>&-
exec 2>&3 3>&-
Aby stderr powłoki został przekierowany, timing-outputzanim zostanie użyta konstrukcja czasu (ponownie, nie polecenie ) (tutaj do czasu cmd > output 2> error 3>&-).
Możesz także uruchomić tę timekonstrukcję w podpowłoce , której przekierowanie stderr:
(time cmd > output 2> error) 2> timing-output
Ale ta podpowłoka nie jest tutaj potrzebna, wystarczy stderr, aby zostać przekierowanym w momencie timewywołania konstrukcji.
Większość systemów ma także timepolecenia. Możesz je wywołać, wyłączając timesłowo kluczowe. Wszystko, co musisz zrobić, to jakoś zacytować to słowo kluczowe, ponieważ słowa kluczowe są rozpoznawane jako takie tylko w dosłownym znaczeniu.
'time' cmd > output 2> error-and-timing-output
Ale uwaga, format może być inny, a stderr obu timei cmdzostanie połączony error-and-timing-output.
Ponadto timepolecenie, w przeciwieństwie do timekonstrukcji, nie może mierzyć czasu potoków lub poleceń złożonych, funkcji lub wbudowanych powłok ...
Gdyby było to polecenie wbudowane, mogłoby ono być w stanie określić czas wywołań funkcji lub poleceń wbudowanych, ale nie byłoby w stanie określić czasu przekierowań, potoków ani poleceń złożonych.
1 Zauważ, że bashma (co można uznać za) błąd, przez który time (cmd) 2> file(ale nie time cmd | (cmd2) 2> filena przykład) przekierowuje wyjście taktowania dofile
timejest słowem kluczowym powłoki, czy/usr/bin/time. Może być tu zaangażowanych kilka zestawów deskryptorów (powłoki i tych dołączonych dotimeprocesu). I nie zapominajmy o tych sugerowanych przez()podpowłokę. ( czekając na specjalistę od bash : p)