quinta-feira, 6 de maio de 2010

Usando o histórico do bash com eficiência

O interpretador de comandos padrão no Linux é o Bash (Bourne-again shell) e ele contém uma funcionalidade muito útil que é guardar o histórico dos comandos executados no prompt. Pressionando a tecla "Seta para cima", no prompt do shell, o usuário pode rolar pelo histórico dos comandos e então pressionando o "Enter" o comando é executado novamente.

Todo o histórico de um usuário é armazenado por padrão no arquivo "/home/usuario/.bash_history" e tem seu tamanho, para a sessão atual, controlado por uma variável de ambiente declarada no arquivo "/etc/profile" ou no "/home/usuario/.bash_profile" (ou .bashrc), em uma linha semelhante a "HISTSIZE=1000". A variável "HISTFILESIZE" limita o tamanho do histórico armazenado no arquivo, arquivo este que pode ser especificado pela variável "HISTFILE".

Também há a possibilidade de filtrar a entrada dos comandos ao histórico. A variável "HISTIGNORE" serve para especificar quais comandos não serão armazenados, por exemplo HISTIGNORE="pwd:ls:ls -la:exit:". A variável "HISTCONTROL" controla o armazenamento dos comandos. Com "HISTCONTROL=ignoredups" os comandos repetidos consecutivos não são armazenados e com " HISTCONTROL=erasedups" os comandos repetidos de todo histórico são removidos. Com "HISTCONTROL=ignorespace" é possível ignorar o armazenamento de um comando se ele iniciar com um espaço. Já com "HISTCONTROL=ignoreboth" todos os valores para esta variável são definidos.

O Bash fornece o comando interno "history" para visualizar ou apagar o histórico. Executando-o sem os parâmetros, todo o histórico é mostrado na tela, em linhas numeradas. Executando-o com o parâmetro "-c" todo o histórico é apagado, executando-o com o parâmetro "-d N" apenas a linha N é removida e executando-o com "-r" é apagado somente o histórico da sessão atual do usuário. Existem outros parâmetros, explicados na página manual do Bash.

É possível procurar por uma linha no histórico. Pressionando "Ctrl+r" o prompt fica ativo para receber a palavra chave e a medida que alguma linha contenha a string, esta vai aparecendo no prompt de comando. Para executar um comando específico contido no histórico usa-se o comando "!n", sendo n o número da linha que ele se encontra.

Muito mais pode ser feito com o histórico do interpretador de comandos Bash, consulte a página manual do Bash e outras fontes pela Internet para conhecer mais.

3 comentários:

  1. sabe como posso fazer para aparecer o IP de origem no history ?

    ResponderExcluir
    Respostas
    1. Olá,
      Não tem como, o propósito do history não é este. Você terá que usar outras ferramentas do sistema.

      Excluir
  2. Objetivo e esclarecedor. Obrigado por compartilhar conhecimento! :)

    ResponderExcluir