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

이는 timeshell 키워드가 첫 번째 명령에 있기 때문입니다. 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

관련 정보