Histórico do Bash com registros de data e hora

14

Gostaria de manter registros de data e hora nos comandos registrados no meu Bash $ HISTFILE, é possível?

Não consegui configurá-lo usando man bashcomo fonte de informação.

Minhas outras opções são as seguintes:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

Eu deveria ter mencionado que estou no OS X Mountain Lion (suspiro). uname -ame dá:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

e echo $BASH_VERSIONme dá:

3.2.48(1)-release

Tentei adicionar isso:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

e prefixa apenas esse tipo de registro de data e hora para comandos:

#1349057791

Eu tento repetir a variável ( echo $HISTTIMEFORMAT), ela tem o valor certo.

Interessante!

Eu até removi o .profile completamente para depurar isso. Ainda apenas timestamps engraçados:

#1349058320

Não sei como solucionar ainda mais esse problema ... :(

Solução : eu estava usando um script que lê diretamente o $ HISTFILE, não o histórico incorporado, portanto o carimbo de data / hora baseado em época (segundos desde o Tempo Universal Coordenado (UTC) de 1 de janeiro de 1970) não estava sendo traduzido usando a cadeia de formatação de data . Plain-old historyfunciona bem, eu vou usar isso em seu lugar.

Robottinosino
fonte
2
Você já tentou configurar HISTTIMEFORMAT?
#
Provavelmente estou entendendo errado o formato strftime. Ajudaria se a página de manual incluísse pelo menos alguns exemplos. +% Y-% m-% d% H-% M-% S?
Robottinosino 01/10/12

Respostas:

14

Sim, coloque isso em ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Em seguida, execute os seguintes comandos:

. ~/.bashrc
history

Isso parecerá assim :

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

Explicações da saída:

  • primeiro col é o único id
  • segundo é a data, terceiro é a hora
  • mais recente é a sua linha de comando
Gilles Quenot
fonte
3
Não, não funciona no OSX .. :( Prob esse é o problema. Um sistema operacional estranho.
Robottinosino 1/01
Você fez source ~/.bashrc?
Gilles Quenot
Eu definitivamente fiz. Ele está fazendo "alguma coisa": adicionando uma linha comentada antes de o comando com um timestamp numérica: # 1349057149
Robottinosino
1
@Robottinosino Sim, a linha comentada é o formato esperado. Para exibir os comandos com hora formatada, use o historycomando interno, não olhe diretamente para o arquivo de histórico.
#
1
É possível registrar o registro de data e hora no arquivo de histórico usando HISTTIMEFORMAT? Eu nunca uso o historycomando, em vez disso, uso um editor de texto para encontrar os comandos que estou procurando, e seria bom ter uma referência de data legível por humanos.
foi