다음 예에서 각각은 time
키워드입니까 아니면 /usr/bin/time
? 왜, 혹은 어떻게 찾나요?
키워드가 명령이 될 수 있나요?
time
아니면 빈 명령에 키워드가 작동합니까 ? (게시물이나 댓글로 이런 질문을 했을 수도 있는데 못찾겠네요)
감사해요.
$ time time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
답변1
에서는 time time
둘 다 내장 bash이며 외부 /usr/bin/time
명령은 없습니다.
time
이는 내장 함수가 파이프를 인수로 사용하지만 time
그 자체가 파이프이므로 여러 번 호출할 수 있기 때문에 가능합니다 .
Bash 소스 코드를 보면 이를 참조하는 주석도 찾을 수 있습니다.특별한 경우time
, 다른 사람 의 전화를 찾 time
거나 팔로우 중입니다 time -p
.
출력은 다음 time
에 의해 생성되므로 한 번만 볼 수 있습니다.비트 플래그 설정, 따라서 해당 파이프에 동일한 비트를 설정하기 때문에 여러 번 호출해도 효과가 없습니다.
그러나 이는 두 개의 별도 파이프라인에서 호출되므로 출력이 두 번 표시됩니다.
$ time { time; }
real 0m0.000s
user 0m0.000s
sys 0m0.000s
real 0m0.000s
user 0m0.000s
sys 0m0.000s
/usr/bin/time
\time
경로를 사용하여 명시 적 으로 호출하여 외부 사용 결과를 볼 수 있습니다. 예를 들어 \
다음 과 같습니다. 예를 들어 다음 command
과 같습니다 .time command time
$ time command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
real 0m0.002s
user 0m0.000s
sys 0m0.000s
/usr/bin/time
보시다시피, 인수 없이 호출되면 외부가 불평합니다... 그리고 그것이 바로 여러분이 보고 있는 것입니다. (또한 이를 실제 명령어에서 사용해보면 출력 형식이 bash에 내장된 출력 형식과 다르다는 것을 알 수 있습니다.)
답변2
첫 번째 예에서 출력이 하나만 표시되면 이는 셸 오류입니다.
ksh
where time
is a 개념을 다시 구현 하는 셸에서는 인수 없이 전체 파이프라인의 시간을 인쇄합니다. 이 특별한 경우에는 단일 키워드만 인쇄 keyword
됩니다 .time
time
을 호출하면 time time
처음에는 전체 파이프라인의 타이밍이 인쇄되고, 두 번째에는 time
자체 타이밍만 인쇄됩니다.
따라서 time
키워드 자체는 실제로 빈 명령 앞의 키워드입니다.
답변3
설정에 따라 둘 다일 수도 있습니다.
다음 명령을 사용하여 시스템에 있는 내용을 볼 수 있습니다.
$ type time
time is a shell keyword
귀하의 예에서는 두 번 모두 time time
동일한 명령을 가리킵니다.