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.

Exemplo da reexecução de um comando em uma linha específica do history !37

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

Mostrando a filtragem de comandos executados e registrados no buffer de memória

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

Exemplo de como alterar o arquivo .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.

Você pode gostar...