Supondo que eu queira rastrear os horários que gasto editando um conjunto de arquivos e registrando-os em um arquivo, como eu poderia fazer a partir da linha de comando usando o comando time
:
time vim test.txt
Eu obtenho
real 0m8.149s
user 0m0.056s
sys 0m0.008s
Bem. Agora, se eu quiser acrescentar sua saída a um arquivo de log,
time vim test.txt >> my.log
Bem, é claro que eu ficaria mais elaborado para me dar mais informações, mas eu não ultrapasse o primeiro passo, o terminal apenas trava com o seguinte aviso:
Vim: Warning: Output is not to a terminal
O redirecionamento interfere no vim que precisa do terminal. Qual seria uma boa solução aqui?
Editar: uma solução alternativa pode ser a seguinte:
time gnome-terminal -x vim test.txt >> my.log
Que abre uma nova janela de terminal na qual o vim é executado. Eu preferiria ficar na mesma janela, mas também poderia viver com essa solução alternativa.
Edit: Também não funcionou, parecia fazer em algum teste, em algum outro contexto, não medindo o tempo usado. No meu script agora eu fiz algo assim:
/usr/bin/time -o tmpfile vim test.txt
echo some stuff 'cat tmpfile' some more stuff >>my.log
rm tmpfile
Parece funcionar.
Edit: Funciona apenas enquanto não houver dois processos usando o mesmo tmpfile
. Para evitar que alguém possa usar o pid do script sendo executado como parte do nome do arquivo temporário:
/usr/bin/time -o $$.tmp vim test.txt
echo some stuff 'cat $$.tmp' some more stuff >>my.log
rm $$.tmp