이것은 작동합니다 :
time ls -l
이 작동하지 않습니다
f() { ls -l }
time f
두 번째 경우에는 시간 출력이 인쇄되지 않습니다. 왜?
답변
@ John1024가에 대한 답변을 제공했습니다 bash
. zsh
태그 에 답하려고합니다 …
함수에 대한 서브 쉘을 생성하면 타이밍 통계를 얻습니다.
% zsh
% f() { sleep 1 }
% time f
% time (f)
( f; ) 0.00s user 0.05s system 4% cpu 1.061 total
% time sleep 1
sleep 1 0.00s user 0.03s system 2% cpu 1.045 total
이것은 약간의 오버 헤드를 추가하지만이 (가짜가 아닌 ;)
) 예제 에서 볼 수 있듯이 아마도 중요하지 않을 것입니다.
답변
당신은 모두이 태그 추가 bash
하고 zsh
. 이 답변은에 적용됩니다 bash
.
이 오류는 bash
다음 과 같습니다.
f() { ls -l }
대신 작동하는 것은 다음과 같습니다.
f() { ls -l ; }
의 새로운 정의로 f
의 time
명령이 작동합니다.
아래 bash
에서 중괄호로 명령을 그룹화 할 때 마지막 명령 뒤에 세미콜론 또는 개행 문자가 와야합니다. 이 내용은의 “복합 명령”에 설명되어 man bash
있습니다.
(나는 아래이 솔루션을 테스트 할 zsh
따라,하지만 난 현재는 설치하지 않은하지만. 이 SO 게시, 아래의 솔루션을 zsh
실행할 수 있습니다 f
서브 쉘에서. 업데이트 : 대한 MPY의 답변을 @ 참조하십시오 zsh
. )