Você poderia fazer algo como
perl -Mposix -pe 's/^#([0-9]{10})/POSIX::strftime( "%d\/%m\/%y %T", gmtime($1))/eg' .bash_history > readable_history
para substituir os registros de data e hora da época no arquivo por formatados. Para fazer isso no lugar, você poderia modificá-lo para inserir os tempos formatados como comentários acima de cada linha, mas certifique-se de colocar um espaço antes do primeiro número para que o bash não tente interpretá-lo como seu próprio timestamp ao ler o histórico arquivo.
Editar: aqui está a linha para fazer isso sem danificar o arquivo de histórico:
perl -Mposix -i -pe 's/^#([0-9]{10})(.*)/"# ".POSIX::strftime( "%d\/%m\/%y %T", gmtime($1))."\n#$1$2"/ge' .bash_history
Isso criará um arquivo assim:
#1356431101 command arg arg
#1356531101 command2 arg2
Veja assim:
# 25/12/12 10:25:01
#1356431101 command arg arg
# 26/12/12 14:11:41
#1356531101 command2 arg2
Edit2: Colocar isso no meu bashrc fez o truque para mim:
format_history () {
perl -i -e '$/=undef;my $string=<>;$string=~s/#([0-9]{10}.*\n.*$)/"# ".localtime($1)."#\n#$1"/ge;print $string;' ~/.bash_history
}
export HISTTIMEFORMAT="%d/%m/%y %T "
shopt -s histappend
PROMPT_COMMAND="history -a;format_history;$PROMPT_COMMAND"
Edição final - Aqui está uma versão melhor do regex que não deve duplicar nada:
perl -i -e '$/=undef;my $string=<>;$string=~s/(#\s[^\n]*\n)?#(\d{10}\n)/"# ".localtime($+)."\n#$+"/ge;print $string;' your_history_file_name_here