Como carimbar o prompt no momento da execução do comando?

4

Como eu adiciono um registro de data e hora ao prompt quando um comando é iniciado? Eu estou procurando uma solução a meio caminho entre um prompt estático e relógio contínuo .

A principal diferença sendo o prompt estático mostrará a hora em que o prompt foi carregado. Se eu deixar ficar por alguns minutos, em seguida, digite um comando, é quando eu quero outro timestamp para ser adicionado. Meu objetivo é ser capaz de ver facilmente a diferença de tempo necessária para executar comandos e por quanto tempo o prompt fica ocioso. O problema com a resposta do relógio contínuo, além do fato de eu querer usar o bash, é que ele perderia o timestamp de início porque atualizaria tudo.

Por exemplo, eu gostaria que meu prompt ficasse assim quando eu abrir um novo shell:

10:30:21 jeff ~ $

Então vamos dizer que ele fica lá por um minuto antes de eu realmente terminar de digitar um comando e apertar Enter

10:30:21 jeff ~ 10:31:28 $ ./long_running.sh
10:36:52 jeff ~ $

Observe que acrescenta outro timestamp mostrando quando eu realmente executei o comando. E eu posso ver facilmente que o comando levou cerca de 5 minutos para ser executado subtraindo do timestamp de início no próximo prompt.

    
por Jeff Puckett 18.08.2016 / 17:46

2 respostas

4

Existe uma armadilha de DEBUG que pode ser chamada antes de cada comando ser executado

por exemplo

trap 'echo -e "\nStarted at: $(date)\n"' DEBUG

Então, se eu fizer isso:

$ trap 'echo -e "\nStarted at: $(date)\n"' DEBUG
$ pwd

Started at: Thu Aug 18 11:59:33 EDT 2016

/home/sweh
$ echo hello

Started at: Thu Aug 18 11:59:35 EDT 2016

hello
$ sleep 100

Started at: Thu Aug 18 11:59:37 EDT 2016

Ele não está reescrevendo o prompt, mas você pode ver como ele pode ser feito para gerar material antes de cada comamnd. Você pode tornar a função de armadilha tão complicada quanto você precisar.

    
por 18.08.2016 / 18:03
2

Confira bash_command_timer.sh por jichu4n .

link

Eu modifiquei meu próprio .bashrc para incluir a data completa.

# https://github.com/jichu4n/bash-command-timer
. bin/bash_command_timer.sh
export BCT_TIME_FORMAT='%Y-%m-%d %H:%M:%S'

Saída:

$ echo 1; echo 2; echo 3
1
2
3
[ 0s031 | 2017-09-18 17:30:29 ]

Por seu README:

For an explanation of how the script works, you're welcome to check out my blog post: DEBUG trap and PROMPT_COMMAND in Bash.

    
por 18.09.2017 / 23:33