cronometrar automaticamente a cada comando executado e mostrar em Bash prompt de? [duplicado]

StackOverflow https://stackoverflow.com/questions/1176386

  •  19-09-2019
  •  | 
  •  

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top