2012-03-15 14 views
12

Chciałem użyć czasu gnu do zmierzenia czasu pracy niektórych małych programów .cc. W człowieku jest napisane, że:Gnu i formatowanie wyjścia

-f FORMAT, --format FORMAT 
Use FORMAT as the format string that controls the output of time. See the below more information. 

Następnie w przykładach mamy:

To run the command `ls -Fs' and show just the user, system, and total time: 
time -f "%E real,%U user,%S sys" ls -Fs 

Ale kiedy próbuję wydać polecenie z przykładu uzyskać:

time -f '%E real,%U user,%S sys' ls -Fs 
-f: command not found 

real 0m0.134s 
user 0m0.084s 
sys  0m0.044s 

jestem Zastanawiając się, gdzie jest problem, gdzie popełniam błąd? Chcę tylko pokazać czas użytkownika, dlatego gram z formatem wyjściowym czasu.

Odpowiedz

12

Bash dla jednego ma wbudowaną powłokę o nazwie time. Jednym ze sposobów obejścia tego jest wpisanie /usr/bin/time. Inny sposób to alias time=/usr/bin/time. Z drugiej strony budowany bash respektuje zmienną środowiskową TIMEFORMAT.

+0

Dzięki za szybką odpowiedź, po prostu użyję TIMEFORMAT, ale wszystkie te działają. – Andna

+1

'/ usr/bin/time' nie jest dostępny na niektórych systemach (np. NixOS), ale odkryłem, że' czas polecenia ... 'działa jako sposób na uniknięcie wbudowanego basha. – Warbo

+0

Świetny punkt, 'command' to narzędzie powłoki zdefiniowane w standardzie POSIX, więc powinno być dostępne w' sh' i cokolwiek (w tym 'bash' i' ksh'), które mogą działać jako 'sh'. Jak wspomniano tutaj: https://stackoverflow.com/questions/6365795/invoking-program-when-a-bash-function-has-the-same-name – minopret