History: Histórico de Comandos no Linux
O histórico de comandos do Linux é um dos recursos mais usados e provavelmente um dos que está classificado como muito importante, já que ajuda muito no dia a dia.
O armazenamento dos comandos é feito de duas maneiras, a primeira é em buffer de memória temporário e a segunda em um arquivo chamado .bash_history que fica localizado no diretório home do usuário que seria /home/erick. Para ver os comandos digitados basta usar as setas para cima/baixo ou digitar history.
Listando todos os comandos
Existem várias formas de explorar o histórico, a primeira obviamente é digitando o comando history para que ele liste todos os comandos que foram executados.
Executando o comando de uma linha específica
Para executar o comando de uma linha, basta colocar o ! na frente e em seguida o número referente ao comando, por exemplo. Supomos que eu queira executar novamente o apt update e ele foi o comando número 3 na ordem de execução, então faço assim.
# history
# !3
Dessa forma o apt update irá rodar imediatamente.
Executando o último comando com uma letra específica
Se você quiser executar um comando específico que inicia com a letra “p” mas outros comandos que também iniciam com a letra “p” foram executados, o shell irá procurar o último para reexecutar.
Exemplo de comandos com a letra “p“: pvcreate, pvs e ping.
# !-p
Como meu último comando foi pvs, logo o shell irá executar o pvs novamente e não o pvcreate ou ping que foram outros comandos executados anteriormente.
Apagando o histórico de comandos
Pra apagar o histórico de comandos do buffer de memória, é só inserir o parâmetro -c (clear history) após o history e depois exit para o logout.
# history -c
# exit
Na prática o histórico de comandos só é gravado após a saída da sessão com seu usuário. Como os comandos que estavam na memória foram limpos, apenas o exit ficará gravado.
Se quiser potencializar a exclusão dos comandos, adicione o -w na frente do comando, esse parâmetro escreve o atual histórico de comandos (limpo pelo -c), um exemplo seria assim.
# history -c -w
Gravando os comandos já executados
Como já dito anteriormente, os comandos executados não ficam salvos até que você faça logout da sessão. Mas é possível contornar isso de uma maneira muito fácil.
Execute o comando com o parêmetro -w (write).
# history -w
Filtrando comandos específicos
Você pode pesquisar um comando apenas pela letra inicial dele ou digitando o inicio do comando como echo ou nano.
Aqui irei filtrar o comando echo que usei para as variáveis e o nano para editar o arquivo .bashrc.
history | grep -i echo
history | grep -i nano
Variáveis do history
Existem algumas variáveis de ambiente que desempenham um papel muito importante no histórico de comandos.
HISTFILE: Contém o nome e localização do arquivo que fica o histórico de comandos.
# echo $HISTFILE
/home/erick/.bash_history
HISTSIZE: Informa o número de comandos armazenados em cache. Quando você atingir o valor definido no HISTFILESIZE, os mais antigos serão excluídos.
HISTFILESIZE: Define quantos comandos podem ser armazenados, geralmente está entre 500 e 2000. Esse valor pode ser alterado para se encaixar em sua necessidade.
Para poder alterar esses parâmetros acesse o diretório do usuário /home/erick, por exemplo, dê um ls -a para listar os arquivos ocultos e edite o arquivo .bashrc. Se quiser ativar os novos parâmetros sem precisar fazer logout, rode o comando abaixo.
# . ~/.bashrc
Links de referência
RedHat: https://www.redhat.com/sysadmin/history-command
GNU.org: https://www.gnu.org/software/bash/manual/html_node/Bash-History-Builtins.html
ss64.com: https://ss64.com/bash/history.html
Para críticas, dúvidas e sugestões, envie um e-mail para erick{“arrob4”}erickandrade.com.br.