Contanto que histappend não está definido e nenhum jogo é jogado com PROMPT_COMMAND , o histórico pode:
-a Append the ''new'' history lines (history lines entered since the beginning of the current bash session) to the history file.
Se quisermos deixar nosso arquivo de histórico real sem danos, poderemos fazer:
$ cat .bash_history #1482030925 ls #1482030926 date #1482030928 free $ echo "one more command" one more command $ echo "another command" another command $ HISTFILE=foo history -a $ cat foo #1482031879 cat .bash_history #1482031887 echo "one more command" #1482031892 echo "another command" #1482031899 HISTFILE=foo history -a
Os comandos anteriores de sessões anteriores (ls, date, free) não aparecem em nosso "novo" arquivo de histórico, foo
- espero que o exemplo traga esse ponto.
Outra abordagem seria salvar o arquivo de histórico atual (no início da sessão de login!) e depois anexar o histórico da sessão atual ao arquivo de histórico (executando "history -a" ou efetuando logout) e então compare os dois arquivos:
$ history > hist.backup $ echo "a new command" a new command $ echo "one more command" one more command $ history > hist.current $ diff hist.{backup,current} 4a5,7 > 5 2016-12-17 19:38:57 echo "a new command" > 6 2016-12-17 19:39:01 echo "one more command" > 7 2016-12-17 19:39:07 history > hist.current
Nota: Sou um grande fã de definir HISTTIMEFORMAT='%F %T '
(introduzido no bash 3, IIRC), timestamps ajudam muito a descobrir quando um comando foi executado.