Eu não acho que você possa conseguir exatamente o mesmo efeito sem modificar a fonte do bash. Mas você pode se aproximar, esperançosamente, perto o suficiente para você.
Você pode combinar hacky do bash Ganho de pré-comando e a variável SECONDS
para mostrar a hora do relógio de parede de uma maneira não intrusiva. Aqui está uma implementação simples devido a Ville Laurikari . As funções timer_start
e timer_stop
são executadas imediatamente antes de iniciar um comando e imediatamente antes de exibir o próximo prompt.
function timer_start {
timer=${timer:-$SECONDS}
}
function timer_stop {
timer_show=$(($SECONDS - $timer))
unset timer
}
trap 'timer_start' DEBUG
PROMPT_COMMAND=timer_stop
PS1='[last: ${timer_show}s][\w]$ '
Para obter as informações completas de time
para cada comando, veja uma maneira de Dennis Williamson :
bind '"\C-j": "\C-atime {\C-e;}\C-m"'
Quando você pressionar Ctrl + J ao invés de Enter para iniciar um comando, você obterá informações de tempo. Rebinding Enter (isto é, Ctrl + M ) não é recomendado porque o comando modificado algumas vezes estará sintaticamente incorreto.
Veja Como pode o tempo de parede do último comando será colocado no prompt Bash? e Cronometrando automaticamente cada comando executado e mostrado no prompt do Bash? no estouro de pilha para outros métodos (note que a maioria só dá o tempo real decorrido, não o tempo da CPU).