No bash, há uma opção que instrui o bash a registrar um timestamp com cada comando. Você faz isso atribuindo um valor útil à variável de ambiente HISTTIMEFORMAT
. Na% man_de% manpage:
If this variable is set and not null, its value is used as a
format string for strftime(3)
to print the time stamp associated
with each history entry displayed by the history builtin. If
this variable is set, time stamps are written to the history
file so they may be preserved across shell sessions. This uses
the history comment character to distinguish timestamps from
other history lines.
No meu ambiente, eu uso
HISTTIMEFORMAT="%s (%H:%M:%S):"
Para que os comandos possam ser classificados facilmente ( bash
é registro de data e hora em segundos) e legível por humanos. No meu shell, quando digito %s
, vejo algo como o seguinte:
3 1437664568 (17:16:08):man bash
4 1437664699 (17:18:19):history
EDIT: pergunta OP não totalmente respondida.
Also I want to extend the script to take incremental backup of the history output file
Não tenho certeza do que você quer dizer com "backup incremental" do arquivo de histórico. Talvez você queira simplesmente que o histórico seja feito periodicamente. Existem algumas abordagens que você pode seguir:
- Defina a variável PROMPT_COMMAND com
history
para atualizar continuamente o comando history após cada chamada (em oposição a aguardar pelo logout).
- Trava o sinal DEBUG com uma função que você define. Toda vez que um comando é inserido, a função será chamada. De dentro da função você pode fazer tudo. (Um pouco mais confiável do que PROMPT_COMMAND).
- cronjob para copiar / arquivar periodicamente o arquivo de histórico.