에서가 ksh
, bash
그리고 zsh
, time
명령 (내장 여부), 그것은 같은 언어의 예약어입니다하지 않습니다 for
나 while
.
파이프 라인 시간을 정하는 데 사용됩니다 1 .
에:
time for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
쉘에 해당 파이프 라인을 실행하도록 지시하는 특수 구문이 있습니다.
for i in 1 2; do cmd1 "$i"; done | cmd2 > redir
타이밍 통계를보고하십시오.
에:
time cmd > output 2> error
그것은 동일한하고있어 , 타이밍cmd > output 2> error
명령을하고, 타이밍 통계는 여전히 쉘의 표준 에러 이동합니다.
당신이 필요합니다 :
{ time cmd > output 2> error; } 2> timing-output
또는:
exec 3>&2 2> timing-output
time cmd > output 2> error 3>&-
exec 2>&3 3>&-
쉘의 stderr timing-output
이 time 구문 ( 명령 이 아닌 )을 사용 하기 전에 (여기서는 time cmd > output 2> error 3>&-
) 로 리디렉션됩니다 .
stderr가 경로 재 지정된 서브 쉘time
에서 해당 구문을 실행할 수도 있습니다 .
(time cmd > output 2> error) 2> timing-output
그러나 여기서 서브 쉘은 필요하지 않으며, time
구문이 호출 될 때 stderr 만 경로 재 지정하면 됩니다.
대부분의 시스템에는 time
명령이 있습니다. time
키워드 를 사용 중지하여 해당 키워드를 호출 할 수 있습니다 . 키워드로 문자 그대로 인용 할 때만 키워드를 인용하면됩니다.
'time' cmd > output 2> error-and-timing-output
그러나 형식이 다른 두의 표준 에러 수 있습니다주의 time
와 cmd
병합됩니다error-and-timing-output
.
또한 time
명령은time
구문 은 파이프 라인 또는 복합 명령 또는 함수 또는 쉘 내장 시간을 지정할 수 없습니다 ...
기본 제공 명령 인 경우 함수 호출 또는 기본 제공 시간을 지정할 수 있지만 재 지정 또는 파이프 라인 또는 복합 명령의 시간을 지정할 수는 없습니다.
1 개 주 bash
(무엇으로 간주 될 수있다) 한 버그 있다 time (cmd) 2> file
(그러나 time cmd | (cmd2) 2> file
예를 들면,은)의 출력 타이밍을 리디렉션file
time
쉘 키워드 인지 또는 에 따라 결과가 달라집니다/usr/bin/time
. 여기에는 여러 가지 설명자 집합이있을 수 있습니다 (쉘 및time
프로세스에 연결된 설명자 ). 그리고()
서브 쉘 이 암시하는 것을 잊지 말자 . ( 강타 전문가를 기다리는 중 : p)