각 예에서 "시간"은 키워드입니까, 아니면 "/usr/bin/time"입니까?

각 예에서 "시간"은 키워드입니까, 아니면 "/usr/bin/time"입니까?

다음 예에서 각각은 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

첫 번째 예에서 출력이 하나만 표시되면 이는 셸 오류입니다.

kshwhere timeis a 개념을 다시 구현 하는 셸에서는 인수 없이 전체 파이프라인의 시간을 인쇄합니다. 이 특별한 경우에는 단일 키워드만 인쇄 keyword됩니다 .timetime

을 호출하면 time time처음에는 전체 파이프라인의 타이밍이 인쇄되고, 두 번째에는 time자체 타이밍만 인쇄됩니다.

따라서 time키워드 자체는 실제로 빈 명령 앞의 키워드입니다.

답변3

설정에 따라 둘 다일 수도 있습니다.
다음 명령을 사용하여 시스템에 있는 내용을 볼 수 있습니다.

$ type time
time is a shell keyword

귀하의 예에서는 두 번 모두 time time동일한 명령을 가리킵니다.

관련 정보