Dicas do Histórico do bash - Aproveitando ao Máximo o Histórico de Comandos
O Que Você Vai Aprender
- Listar e reutilizar comandos anteriores com
history - Buscar no histórico instantaneamente com
Ctrl+R - Usar os atalhos
!!e!$para evitar redigitação - Personalizar o comportamento do histórico com
HISTSIZEeHISTCONTROL
1. O Comando history
Conclusão:
historylista comandos anteriores com números que você pode filtrar e reexecutar.
history e o bash mostra todos os seus comandos anteriores com números.$ 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 número de histórico à esquerda. Você pode usar esse número para reexecutar um comando específico 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 você procura sem percorrer tudo.
Mostrar apenas as últimas N entradas
$ history 10
Passe um número para ver apenas os N comandos mais recentes.
2. Teclas de Seta
Conclusão: Pressione a seta para cima para voltar pelos comandos anteriores um por um.
| Tecla | Ação |
|---|---|
↑ |
Comando anterior |
↓ |
Próximo comando (avançar no histórico) |
Ctrl+A |
Mover cursor para o início da linha |
Ctrl+E |
Mover cursor para o final da linha |
Se você foi longe demais para trás, pressione ↓ para avançar novamente. Pressione Ctrl+C para cancelar sem executar nada.
3. Ctrl+R: Busca Reversa Incremental
Conclusão:
Ctrl+Rbusca no seu histórico em tempo real conforme você digita uma palavra-chave.
Ctrl+R entra em ação. Basta digitar uma palavra-chave e o bash encontra comandos correspondentes instantaneamente.Pressione Ctrl+R e o promptUm símbolo (como $ ou #) exibido quando o shell está esperando sua entrada. muda para:
(reverse-i-search)`':
Comece a digitar e o bash mostra comandos correspondentes em tempo real:
(reverse-i-search)`apt': sudo apt update
Referência de teclas do Ctrl+R
| Tecla | Ação |
|---|---|
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 edição em vez de executar |
Ctrl+G |
Cancelar busca e voltar ao prompt vazio |
Ctrl+S é frequentemente interceptado pelo controle de fluxo do terminalUm programa interativo que interpreta os comandos digitados e os executa. (XON/XOFF). Se não responder, adicione stty -ixon ao seu .bashrc e reinicie o shell.
4. Expansão de Histórico: !!, !$ e Mais
Conclusão:
!!,!$,!^e!nreexecutam partes de um comando anterior.
!! em comandos online, mas não entendo o que faz.!! significa "o último comando inteiro que eu executei." O caso de uso clássico é corrigir um sudo esquecido.!! — Repetir o último 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 executá-lo, para que você veja exatamente no que !! se transformou.
!$ — Último argumento do comando anterior
$ mkdir -p /var/log/myapp $ cd !$ cd /var/log/myapp
!$ se expande para a última palavra do comando anterior. Ótimo 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 número do histórico
$ history | grep grep 500 grep -r "error" /var/log/syslog $ !500 grep -r "error" /var/log/syslog
Use ! seguido de um número do histórico para reexecutar aquele comando específico.
A expansão de histórico executa imediatamente sem etapa de confirmação. Tenha especial cuidado com comandos destrutivos -- sempre verifique no que !! vai se expandir antes de pressionar Enter.
5. HISTSIZE e HISTFILESIZE
Conclusão: Defina
HISTSIZEeHISTFILESIZEno.bashrcpara manter mais histórico.
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 você sai do bash, os comandos da sessão são escritos em ~/.bash_history. HISTFILESIZE limita quantas linhas esse arquivo pode conter.
$ wc -l ~/.bash_history 1247 /home/ubuntu/.bash_history
6. HISTCONTROL — Remover Ruído do Histórico
Conclusão:
HISTCONTROL=ignorebothremove duplicatas e comandos prefixados com espaço.
# Adicione ao ~/.bashrc HISTCONTROL=ignoreboth
| Valor | Efeito |
|---|---|
ignorespace |
Ignorar comandos que começam com espaço |
ignoredups |
Ignorar entradas duplicadas consecutivas |
ignoreboth |
Ambos acima (escolha mais comum) |
erasedups |
Remover todas as duplicatas de todo o histórico |
Manter comandos sensíveis fora do histórico
$ secret-command --password=mypassword
Inicie um comando com um espaço inicial e (com ignorespace ativo) o bash não o registrará. Útil quando você precisa digitar uma credencial na linha de comando.
7. HISTTIMEFORMAT — Adicionar Carimbos de Data/Hora
Conclusão: Defina
HISTTIMEFORMATpara adicionar um carimbo de data/hora a cada entrada do histórico.
# 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 revisões pós-incidente ou trilhas de auditoria.