chama 'time' com opção de formatação

4

Eu quero medir o tempo de execução dos comandos e obter (para mim) um comportamento estranho do comando time .

Eu chamo time como é mencionado nos exemplos das páginas de man com a opção -f ou --format e recebo um erro command not found . Parece que ele acha que -f é o comando para medir o tempo de execução de ...

user@laptop:~$ time -f '%e' sleep 1
-f: Befehl nicht gefunden.

Em seguida, chamo a mesma linha novamente, apenas especifico o caminho para time . O resultado muda, funciona como pretendido (wtf?):

user@laptop:~$ /usr/bin/time -f '%e' sleep 1
1.00

Agora estou confuso ... mesmo which não pode me ajudar:

user@pc:~$ which time
/usr/bin/time

E ... se eu não usar opções, ele funciona bem, mesmo sem o caminho completo:

user@laptop:~$ time sleep 1

real    0m1.003s
user    0m0.001s
sys 0m0.002s

Como eu uso este comando corretamente se eu quiser especificar opções? Usar o caminho completo parece funcionar, mas parece mais um efeito colateral não confiável de algo com erros (ou algo que eu não entendo)?

Edit: Estou usando o Ubuntu 14.04 LTS (fiel)

    
por Boris Däppen 29.02.2016 / 22:57

2 respostas

4

Bash tem um comando incorporado chamado time . Portanto, se você digitar apenas time , ele usará o shell interno que não possui opções como -f . Mas man time (que fala sobre -f ) dará a manpage do programa /usr/bin/time . Portanto, se você quiser usar as opções descritas na página do manual, certifique-se de chamar o programa, não o shell interno. Uma forma de alcançar isso é usar o caminho completo.

(IMHO, isso é realmente feio no bash)

Para mais informações, consulte os links abaixo da pergunta.

    
por 29.02.2016 / 23:51
0

Pensei em adicionar uma maneira de mostrar as informações da resposta de Boris.

Como foi apenas confuso pelo tempo novamente.

No bash type é seu amigo. Eu realmente deveria me lembrar de usá-lo mais. Os velhos hábitos de csh são difíceis de morrer.

which -a time  
/usr/bin/time

type time 
time is a shell keyword

type times  
times is a shell builtin

type nslookup  
nslookup is /usr/bin/nslookup
    
por 09.04.2018 / 10:48

Tags