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.
. .. .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.
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.
Seus valores agora estão ativos para seu shell atual e todos os subshells.
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:
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.
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.
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.
Dicas de como usar o comando systemctl no LINUX
Dicas para proteger seu sistema Linux