Comando history – Visualizar e editar histórico de comandos no Shell – Certificação LPIC 1

Comando history – Visualizar e editar histórico de comandos no Shell – Curso de Linux / LPI 1

Vamos estudar neste artigo o comando do shell bash history. Quando usamos o shell bash, é natural digitarmos comandos longos e complexos, e muitas vezes precisamos repeti-los depois, ou executá-lo diversas vezes com algumas pequenas variações.

O shell bash (e outros shells modernos) incluem um conjunto de recursos muito interessante conhecidos como histórico, expansão e edição de comandos. Com esses comandos, é bastante simples ter acesso a comandos digitados anteriormente, tornando mais eficiente nosso uso do shell.

Vamos falar primeiramente do histórico. Quando usamos o shell bash de forma interativa, temos acesso a uma lista de comandos digitados anteriormente. Esses comandos são armazenados no shell antes mesmo de serem interpretados, ou seja, antes dos coringas serem expandidos e de as substituições de comandos serem realizadas.

A lista do histórico da sessão atual é controlada por uma variável especial do shell chamada de HISTSIZE. Por padrão, essa variável é ajustada para gravar 1000 linhas, mas podemos alterar esse valor configurando a variável HISTSIZE. Vejamos o conteúdo dessa variável:

$ echo $HISTSIZEComando history no Linux

Algumas distribuições possuem um valor diferente na variável HISTSIZE. Veja o valor no Linux Debian:histórico de comandos no Linux

Além disso, os comandos de sessões anteriores do bash são armazenados em um arquivo de nome ~/.bash_history, ou então em um arquivo nomeado na própria variável HISTSIZE.

Uma outra variável de ambiente especial que lida com o histórico é a variável HISTFILESIZE, que contém o número de entradas gerais armazenadas no histórico do computador. Vejamos o tamanho configurado nela:

$ echo $HISTFILESIZEvisualizar histórico de comandos com history no linux

Se quisermos, é possível alterar os valores dessas duas variáveis de forma permanente no perfil de um usuário, bastando para isso editar o arquivo ~/.bashrc:

$ vi ~/.bashrcArquivo bashrc no Linux

Basta aumentar os valores conforme desejado, salvar e fechar o arquivo.

Podemos visualizar o histórico de comandos usando o comando history:

$ historyver histórico de comandos no linux com comando history

Note que antes de cada comando aparece um número, que poderá ser usado quando desejado na expansão do histórico para reexecutar um comando executado anteriormente. A expansão do histórico também permite que editemos os comandos, até um certo limite.

Alguns caracteres, usados para que executemos outra vez comandos anteriores, e chamados de designadores de expansão do histórico, são listados na tabela a seguir:

Designador Descrição
!! Referência ao comando mais recente.
!n Referência ao comando de número n do histórico.
!-n Comando atual menos n do histórico.
!string Referência ao comando mais recente que comece com a string informada.
!?string Referência ao comando mais recente que contenha a string informada.
^string1^string2 Executa novamente o último comando, substituindo a primeira ocorrência da string1 pela string2

Podemos também explorar o conteúdo do arquivo ~/.bash_history:

$ cat .bash_historyArquivo bash_history no Linux

Ele contém uma lista de comandos armazenados na última sessão do shell executada.

Podemos nos movimentar pelas linhas do histórico usando alguns atalhos de teclado e vinculações de teclas estilo Emacs, como podemos ver na tabela abaixo:

Teclas Descrição
Seta acima ou Ctrl-p Mover uma linha acima no histórico de comandos (comandos anteriores)
Seta abaixo ou Ctrl-n Mover uma linha abaixo no histórico de comandos
Ctrl-b ou seta à esquerda Voltar um caractere
Ctrl-f ou seta à direita Avançar um caractere
Ctrl-a (home) Início da linha
Ctrl-e (end) Fim da linha
Alt-< Início do histórico (primeiro comando da lista)
Ctrl-k Apaga o texto desde a posição do cursor até o final da linha
Alt-d Apaga uma palavra inteira (onde estiver o cursor)

Exemplos:

1. Listar todos os comandos digitados pelo usuário:

$ historyExemplo do comando history no Linux

2. Executar novamente o comando de número 12:

$ !12comando history no linux-exemplo de uso

3. Executar novamente o comando para copiar o arquivo /etc/passwd (último digitado) para o diretório atual, porém dessa vez copiando o arquivo /etc/group:

$ cp /etc/passwd .
$ ^passwd^groupexemplo do comando history no linux

4. Listar os comandos mostrando a data e hora em que forma executados:

$ export HISTTIMEFORMAT= ‘%F %T ‘
$ historycomando history no linux

Para desativarmos a exibição dos dados de data e hora, basta eliminar a variável HISTTIMEFORMAT:

$ unset export HISTTIMEFORMAT
$ historycomo usar o comando history no linux

5. Visualizar somente os 10 últimos comandos digitados pelo usuário:

$ history 10como aplicar o comando history no linux

6. Procurar comandos específicos no histórico filtrando com grep:

$ history | grep unamecomando history linux

7. Repetir o último comando digitado no terminal:

$ !!history command on linux how to

8. Limpar todo o histórico de comandos:

$ history -c
$ historycómo utilizar el comando history en Linux

Há muitas outras opções disponíveis para o comando history. Digite man history para ver a ajuda completa do comando. E aproveite para assistir a um vídeo demonstrativo sobre o assunto:

 

Sobre Fábio dos Reis (1221 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

2 Comentários em Comando history – Visualizar e editar histórico de comandos no Shell – Certificação LPIC 1

  1. Antônio Reis // 22/08/2020 em 13:12 // Responder

    Boa tarde Reis!
    Muito instrutivo e prático suas colocações. Sou novato no do Linux Mint, não sei o que fiz, mas não consigo abrir nenhum documento nas pastas da minha área de trabalho; pois aparece um mensagem de erro dizendo que é um arquivo.
    Você me ajudar a desvendar esse enigma?

  2. Fala Reis, torço para que esteja tudo bem com você.
    Obrigado por dedicar seu tempo criando conteúdos ricos e didáticos. Me ajudou de mais esse seu artigo.

Escreva um comentário

Seu e-mail não será divulgado


*