Existe também o mecanismo histórico do bash. Se ativado, o bash manterá um arquivo ~/.bash_history
que contém todas as linhas de comando que você digitou, até um número máximo de entradas.
Há também o comando fc
para navegar pelo histórico sem olhar pelo arquivo, por exemplo, fc -l 1 | fgrep echo
para listar todas as linhas do histórico que contêm echo
em qualquer lugar.
Tudo isso, claro, pode ser configurado:
-
HISTFILE
define o nome do arquivo de histórico, em vez de~/bash_history
-
HISTSIZE
define o número máximo de entradas que são mantidas no histórico (o padrão é 500). -
HISTCONTROL
permite algum ajuste fino sobre o que é mantido na história e o que não. Ao definirHISTCONTROL=ignoreboth
, as entradas duplicadas são mantidas apenas uma vez, e você pode evitar que linhas de comando únicas apareçam no histórico ao prefixar um espaço (por exemplo,ls
em vez dels
).
Eu gosto de manter o máximo de HISTSIZE
sem diminuir a velocidade da minha máquina, o que geralmente é cerca de 50000 antes de ser notado. Dessa forma, eu posso voltar por meses se não lembrar de um canal difícil ou algo assim e precisar novamente.
(Eu não estou usando o bash sozinho, apenas zsh, mas pelo que eu peguei da manpage o mecanismo é similar. Alguém, por favor, me corrija se eu entendi errado.)