Dicas do Historico do bash - Aproveitando ao Maximo o Historico de Comandos
O Que Voce Vai Aprender
- Listar e reutilizar comandos anteriores com
history - Buscar no historico instantaneamente com
Ctrl+R - Usar os atalhos
!!e!$para evitar redigitacao - Personalizar o comportamento do historico com
HISTSIZEeHISTCONTROL
1. O Comando history
Conclusao:
historylista comandos anteriores com numeros que voce pode filtrar e reexecutar.
history e o bash mostra todos os seus comandos anteriores com numeros.$ history 498 ls -la /var/log 499 sudo apt update 500 grep -r "error" /var/log/syslog 501 cd /home/ubuntu 502 history
Cada linha tem um numero de historico a esquerda. Voce pode usar esse numero para reexecutar um comando especifico depois.
Filtrar com grep
$ history | grep apt 499 sudo apt update 485 sudo apt install vim 470 apt search nginx
Encaminhe history para grep para encontrar o comando que voce procura sem percorrer tudo.
Mostrar apenas as ultimas N entradas
$ history 10
Passe um numero para ver apenas os N comandos mais recentes.
2. Teclas de Seta
Conclusao: Pressione a seta para cima para voltar pelos comandos anteriores um por um.
| Tecla | Acao |
|---|---|
↑ |
Comando anterior |
↓ |
Proximo comando (avancar no historico) |
Ctrl+A |
Mover cursor para o inicio da linha |
Ctrl+E |
Mover cursor para o final da linha |
Se voce foi longe demais para tras, pressione ↓ para avancar novamente. Pressione Ctrl+C para cancelar sem executar nada.
3. Ctrl+R: Busca Reversa Incremental
Conclusao:
Ctrl+Rbusca no seu historico em tempo real conforme voce digita uma palavra-chave.
Ctrl+R entra em acao. Basta digitar uma palavra-chave e o bash encontra comandos correspondentes instantaneamente.Pressione Ctrl+R e o prompt muda para:
(reverse-i-search)`':
Comece a digitar e o bash mostra comandos correspondentes em tempo real:
(reverse-i-search)`apt': sudo apt update
Referencia de teclas do Ctrl+R
| Tecla | Acao |
|---|---|
Ctrl+R |
Iniciar busca reversa / pular para resultado mais antigo |
Ctrl+S |
Pular para resultado mais recente (pode precisar ativar) |
Enter |
Executar o comando exibido |
← → |
Mudar para modo de edicao em vez de executar |
Ctrl+G |
Cancelar busca e voltar ao prompt vazio |
Ctrl+S e frequentemente interceptado pelo controle de fluxo do terminal (XON/XOFF). Se nao responder, adicione stty -ixon ao seu .bashrc e reinicie o shell.
4. Expansao de Historico: !!, !$ e Mais
Conclusao:
!!,!$,!^e!nreexecutam partes de um comando anterior.
!! em comandos online, mas nao entendo o que faz.!! significa "o ultimo comando inteiro que eu executei." O caso de uso classico e corrigir um sudo esquecido.!! — Repetir o ultimo comando
$ apt update E: Could not open lock file /var/lib/dpkg/lock-frontend... $ sudo !! sudo apt update
Digitar sudo !! automaticamente se torna sudo apt update e o executa.
O bash sempre mostra o comando expandido antes de executa-lo, para que voce veja exatamente no que !! se transformou.
!$ — Ultimo argumento do comando anterior
$ mkdir -p /var/log/myapp $ cd !$ cd /var/log/myapp
!$ se expande para a ultima palavra do comando anterior. Otimo para evitar reescrever caminhos longos.
!^ — Primeiro argumento do comando anterior
$ diff file1.txt file2.txt $ vim !^ vim file1.txt
!^ se expande para o primeiro argumento do comando anterior.
!n — Reexecutar pelo numero do historico
$ history | grep grep 500 grep -r "error" /var/log/syslog $ !500 grep -r "error" /var/log/syslog
Use ! seguido de um numero do historico para reexecutar aquele comando especifico.
A expansao de historico executa imediatamente sem etapa de confirmacao. Tenha especial cuidado com comandos destrutivos -- sempre verifique no que !! vai se expandir antes de pressionar Enter.
5. HISTSIZE e HISTFILESIZE
Conclusao: Defina
HISTSIZEeHISTFILESIZEno.bashrcpara manter mais historico.
Adicione estas linhas ao ~/.bashrc:
HISTSIZE=10000 # comandos mantidos na memoria durante a sessao HISTFILESIZE=20000 # linhas salvas em ~/.bash_history ao sair
Recarregue para aplicar:
$ source ~/.bashrc
Sobre o ~/.bash_history
Quando voce sai do bash, os comandos da sessao sao escritos em ~/.bash_history. HISTFILESIZE limita quantas linhas esse arquivo pode conter.
$ wc -l ~/.bash_history 1247 /home/ubuntu/.bash_history
6. HISTCONTROL — Remover Ruido do Historico
Conclusao:
HISTCONTROL=ignorebothremove duplicatas e comandos prefixados com espaco.
# Adicione ao ~/.bashrc HISTCONTROL=ignoreboth
| Valor | Efeito |
|---|---|
ignorespace |
Ignorar comandos que comecam com espaco |
ignoredups |
Ignorar entradas duplicadas consecutivas |
ignoreboth |
Ambos acima (escolha mais comum) |
erasedups |
Remover todas as duplicatas de todo o historico |
Manter comandos sensiveis fora do historico
$ secret-command --password=mypassword
Inicie um comando com um espaco inicial e (com ignorespace ativo) o bash nao o registrara. Util quando voce precisa digitar uma credencial na linha de comando.
7. HISTTIMEFORMAT — Adicionar Carimbos de Data/Hora
Conclusao: Defina
HISTTIMEFORMATpara adicionar um carimbo de data/hora a cada entrada do historico.
# Adicione ao ~/.bashrc HISTTIMEFORMAT="%Y-%m-%d %T "
$ history 5 998 2026-06-01 10:23:45 ls -la 999 2026-06-01 10:24:12 cd /var/log 1000 2026-06-01 10:25:30 sudo apt update 1001 2026-06-01 10:26:01 tail -f /var/log/syslog 1002 2026-06-01 10:28:44 history 5
Carimbos de data/hora ajudam a responder "quando exatamente eu executei aquilo?" durante revisoes pos-incidente ou trilhas de auditoria.