Dicas de como utilizar o comando history

Comando History

O comando history é um daqueles comandos obscuros que são poderosos e úteis para saber pelo menos em um nível básico. Este artigo desviará o mistério da história do Bash para torná-lo uma ferramenta de administrador de sistema mais amigável.

Todo usuário de Linux e Unix já devem ter utilizado as teclas de seta pra cima e pra baixo, a fim de rolar os comandos anteriormente utilizados.

Entendendo o comando

No Bash, seu histórico de comandos é armazenado em um arquivo ( .bash_history) em seu diretório inicial. O (.) À esquerda torna o arquivo oculto da visualização normal. Para vê-lo, execute o comando  ls -a.

$ ls -a

.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc

Você pode operar no arquivo .bash_history como faria com qualquer outro arquivo de texto ASCII simples.

As três variáveis de ambiente relacionadas das quais você precisa estar ciente são HISTFILE, HISTFILESIZE e HISTSIZE.

HISTFILE— / home / <username> /.bash_history

HISTFILESIZE — 1000

HISTSIZE — 1000

A variável HISTFILE contém o nome e a localização do seu arquivo de histórico do Bash. HISTFILESIZE é quantos comandos podem ser armazenados no arquivo .bash_history. HISTSIZE é o número de comandos em cache. Depois de atingir 1000 comandos, os comandos mais antigos serão descartados à medida que os novos são salvos.

$ echo $HISTSIZE

1000

$ echo $HISTFILESIZE

1000

$ echo $HISTFILE

/home/afrare/.bash_history

Cada usuário, incluindo root, possui essas variáveis e tamanhos atribuídos por padrão. Se você deseja alterar essas variáveis, edite o arquivo .bashrc em seu diretório inicial. Por exemplo, se você deseja alterar as variáveis de tamanho para 500 comandos, edite o arquivo .bashrc e use as seguintes entradas:

export HISTSIZE=500

export HISTFILESIZE=500

Para usar os novos valores sem fazer logoff e logon novamente, você pode executar o arquivo .bashrc.

$ . ~/.bashrc

Seus valores agora estão ativos para seu shell atual e todos os subshells.

$ echo $HISTSIZE

500

$ echo $HISTFILESIZE

500

Se não quiser que seu histórico mantenha comandos duplicados, instrua seu histórico a ignorar entradas duplicadas adicionando o seguinte ao arquivo .bashrc:

export HISTCONTROL=ignoredups

Problemas e Soluções

O problema com o histórico do Bash é que ele não é gravado no arquivo .bash_history até que você faça logoff. Isso torna impossível usar o comando history para scripts. Por exemplo, digamos que você esteja dando uma aula de Linux e deseja verificar se os alunos executaram um determinado comando para copiar seus arquivos para uma unidade externa montada. Se o aluno permanecer conectado ao sistema, você não poderá determinar se a cópia foi executada porque seu script usa o arquivo de histórico (/home/afrare/.bash_history) para verificar se o comando foi executado.

A solução

Para contornar esse recurso, use a opção de gravação para o comado history. Como parte da instrução da classe, você faria com que os alunos executassem esse comando para salvar seu histórico, mesmo que não façam logoff.

$ history -w

Isso grava todo o histórico de comando da sessão atual no HISTFILE. E agora seu script de verificação pode descobrir facilmente se o comando foi executado. Você também precisa confiar que o aluno executará o comando de histórico.

Outro problema

Como HISTSIZE e HISTFILESIZE são relativamente grandes (1000 comandos), é possível que o aluno tenha executado o comando antes. Você pode adicionar a entrada export HISTCONTROL = ignoreups em seu .bashrc, mas isso não ajudará se o aluno executou um comando semelhante há dois dias porque o arquivo mostrará apenas um único comando.

A solução para este problema

Para contornar esse problema, você deve limpar o histórico do aluno ao fazer logon. Edite o arquivo .bashrc novamente e adicione o seguinte comando a ele.

history -c

Este comando limpa seu histórico em cada logon e remove o problema de selecionar um comando executado anteriormente. Você não precisa se preocupar em pegar um comando de sessões anteriores porque o sistema desconecta os usuários ociosos após um determinado período de tempo se você definir o limite de tempo ocioso em /etc/profile. Edite o arquivo /etc/profile e adicione a seguinte entrada.

TMOUT=300

A variável TMOUT usa vários segundos de tempo ocioso. Nesse caso, 300 segundos são cinco minutos. Você pode definir esse valor para qualquer número de segundos. Este valor entrará em vigor no próximo logon para todos os usuários. Para definir valores de tempo limite individuais, use,  .bashrc mas saiba que os usuários podem alterar este arquivo à vontade.

Conclusão

Acreditamos que agora, você poderá utilizar o comando history com maior eficiência. Segue abaixo mais alguns artigos.

22 dicas utilizando o SSH

Dicas de como usar o comando systemctl no LINUX

Dicas para proteger seu sistema Linux

 

 

Share This Article
Follow:
Escritor do livro Aplicações Avançadas em LINUX com mais de 20 anos trabalhando com LINUX e UNIX.
Sair da versão mobile