Não sei o que aconteceu sem ter acesso à sua máquina, mas aqui está uma breve explicação de como o sistema de histórico funciona, o que pode ajudá-lo a descobrir o que aconteceu.
Cada terminal aberto possui seu próprio buffer de histórico. Esses buffers são anexados ao seu $HISTFILE
quando o terminal é fechado (talvez também sempre que o buffer é preenchido, mas eu não sei com que freqüência isso acontece). Agora, a maneira de procurar um comando no seu histórico é simplesmente executar:
history | grep command
Mas se o comando foi executado em um shell diferente, você não o verá no histórico do seu atual. Para consertar isso, você fecha todos os shells abertos, abre uma nova janela de terminal e pesquisa seu histórico novamente.
Se isso ainda não ajudar, provavelmente você ultrapassou o limite de comandos armazenados no $HISTFILE
. O comportamento do $HISTFILE
é controlado por várias variáveis de ambiente (veja man bash
para a lista completa), mas as relevantes aqui são:
HISTSIZE
The number of commands to remember in the command history (see HISTORY below). If the value is 0, commands are not saved in the history list. Numeric values less than
zero result in every command being saved on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files.
HISTFILESIZE
The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than
that number of lines by removing the oldest entries. The history file is also truncated to this size after writing it when a shell exits. If the value is 0, the history
file is truncated to zero size. Non-numeric values and numeric values less than zero inhibit truncation. The shell sets the default value to the value of HISTSIZE after
reading any startup files.
Quanto mais altos valores você definir, mais comandos você manterá em $HISTFILE
. Por exemplo, eu uso:
HISTSIZE=999999
HISTFILESIZE=999999
Se você quiser importar o histórico de um shell para outro, use o comando history
:
$ help history | grep -E -- '-a|-r'
-a append history lines from this session to the history file
-r read the history file and append the contents to the history
Portanto, execute history -a
para gravar o histórico de um terminal e, em seguida, history -w
para lê-lo do outro. Agora, executar history
mostrará o histórico das duas conchas.
Por fim, você pode fazer com que todos os seus terminais compartilhem o mesmo histórico adicionando essas linhas ao seu ~/.bashrc
:
## history -a causes the last command to be written to the
## history file automatically and history -r imports the history
export PROMPT_COMMAND='history -a;history -r'
Eu também sugiro que você adicione isto:
## Make Bash append rather than overwrite the history on disk:
shopt -s histappend