unbuffer 명령이 time 명령에 영향을 미치는 이유는 무엇입니까?

unbuffer 명령이 time 명령에 영향을 미치는 이유는 무엇입니까?

unbuffer 명령을 time 명령과 함께 사용할 때 이상한 점을 발견했습니다. 여기서는 내 시스템에서 특정 파일을 찾는 데 시간이 얼마나 걸리는지 확인하고 싶습니다.

time find . -name unixstuff

출력은 다음과 같습니다

./Documents/CProgramming/2031/unix/Awk/unixstuff
0.011u 0.173s 0:00.38 47.3%     0+0k 0+0io 0pf+0w

하지만 이 명령 출력 전에 unbuffer를 작성하면 다음과 같습니다.

./Documents/CProgramming/2031/unix/Awk/unixstuff
0.01user 0.17system 0:00.38elapsed 47%CPU (0avgtext+0avgdata 4656maxresident)k
0inputs+0outputs (0major+338minor)pagefaults 0swaps

0.17s가 0.17 시스템으로 확장되고 다른 속기 확장이 발생했습니다. 이러한 행동 변화가 발생하는 이유를 알고 싶습니다. 나는 내 파이프에서 예측할 수 없는 출력을 원하지 않습니다.

답변1

time첫 번째 명령의 이 셸 키워드이기 때문입니다 . time두 번째 명령의 는 실행 파일입니다 . 다음 type의 출력을 참조하세요 time.

$ type -a time
time is a shell keyword
time is /usr/bin/time

명령에는 unbuffer쉘 키워드가 아닌 인수로 프로그램이 필요합니다. 쉘 키워드를 해석할 수 없습니다. 이는 bash내부 키워드입니다.

그리고 여러분이 보는 출력의 차이점은 두 가지 명령 구현의 차이점입니다 time. 두 번째 명령과 동일한 동작을 수행하는 첫 번째 명령에서 절대 경로를 사용하십시오.

/usr/bin/time find . -name unixstuff

관련 정보