외부 명령이 아닌 bash에서 내장“time”명령 사용


12

time명령으로 작업하면서 time외부 GNU 시간 명령 대신 내장 기능을 사용해야하는 상황을 발견했습니다 /usr/bin/time. 어떻게해야합니까? 어딘가에서 사용 enable하거나 command도움을 줄 수있는 것을 보았지만 도움이되지 않았습니다.

이것은 유스 케이스입니다.

watch "time ls"

/usr/bin/time내가 원하지 않는 외부 명령 을 사용합니다 ! 때 발생 time내가 실행할 때 내부 bash는 함수를 호출 time ls과 같이 터미널에서 :

$ time ls

정반대의 요청에 대한 답변이 여기에 있습니다.

두 명령에는 많은 차이가 있습니다. 내부 time는 더 정확하지만 (필요한) 외부 명령에는 더 많은 옵션이 있습니다 (필요하지 않음).


watch 'bash -c "builtin time ls"'혹시?
glenn jackman

1
bash가 내장을 사용하도록 강제하는 방법에 대해서는 여기 를 참조하십시오 .Petr Utzl의 answer2 : builtin time트릭을 수행해야합니다.
Fiximan

2
@Fiximan, time에 내장되지 않습니다 bash당신이 (같은 파이프 라인 시간이 수 있도록 언어의 예약어입니다, time foo | bar(같은) 또는 화합물 명령 time for i in...;done)
스테판 Chazelas가

답변:


13

기본적으로 watch명령을 실행하여 /bin/sh -c '...'표시되는 출력이 명령을 /bin/sh해석하는 방법 time입니다. 당신은 /bin/sh분명히 내장 기능이 없습니다 time.

다른 쉘로 명령을 실행하려면 -x옵션을 사용 하여 기본값을 제거한 다음 원하는 내장 쉘을 명시 적으로 호출하십시오.

watch -x bash -c 'time ls'
watch -x zsh -c 'time ls'

실행 방법에 관계없이 watch보고있는 watch명령 은 명령 을 실행 한 셸의 자식이 아니므로 셸 설정이 직접 관련이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.