cronometrar automaticamente a cada comando executado e mostrar em Bash prompt de? [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
Eu muitas vezes acontecem a esquecer de execuções explicitamente prefixo com o comando "tempo", idealmente gostaria de ver na próxima shell prompt de quanto tempo real o último comando tomou (em cada comando).
Já percorri através da documentação bash, mas não conseguiu encontrar qualquer coisa relacionada.
Solução
Você pode fazer isso:
$ bind '"\C-j": "\C-atime \C-m"'
Ou ponha isto em sua ~/.inputrc
:
"\C-j": "\C-atime \C-m"
Então, quando você quer fazer time sleep 1
você digite sleep 1
e pressione Ctrl + J em vez de Enter .
Eu não recomendaria trocar o j
e m
no comando bind (ou no arquivo .inputrc). Toda vez que você pressionar Enter Você deseja obter time
acrescentou que poderia ser muito chato e causaria erros ao digitar um comando multi-line.
Você pode adicionar este a sua ~/.bashrc
para fazer a saída de time
mais compacto:
export TIMEFORMAT='r: %R, u: %U, s: %S'
(semelhante a minha resposta aqui .)
Outras dicas
Outro segmento stackoverflow cobre a essencialmente a mesma pergunta. Minha resposta nesse segmento pode ser resumido como:
trap 'SECONDS=0' DEBUG
export PS1='your_normal_prompt_here ($SECONDS) # '
... para exibir o número de segundos como um inteiro, ou:
seconds2days() { # convert integer seconds to Ddays,HH:MM:SS
printf "%ddays,%02d:%02d:%02d" $(((($1/60)/60)/24)) \
$(((($1/60)/60)%24)) $((($1/60)%60)) $(($1%60)) |
sed 's/^1days/1day/;s/^0days,\(00:\)*//;s/^0//' ; }
trap 'SECONDS=0' DEBUG
PS1='other_prompt_stuff_here ($(seconds2days $SECONDS)) # '
.. para "Ddays, HH: MM: SS". Com valores principais vazios removido