O Histórico de Comandos - Linux Shell Essentials - Parte 6
Neste artigo iremos continuar explorando o Shell do Linux, entendo como funciona seu mecanismo de histórico de comandos.
O Histórico de comandos do Shell.
O histórico do Gnu/Linux é um arquivo que contém os últimos comandos digitados pelo usuário. Entre suas finalidades podemos citar: Analisar as últimas ações do usuário; Executar comandos repetitivos; Executar comando que tenham pequena variação na lista de argumentos. Por exemplo, eu preciso verificar os arquivos de uma estrutura de diretório que eu não estou familiarizado. Então irei executar o comando:
$ ls /var
agentx cache games local log opt spool www
backups crash lib lock mail run tmp
Agora que eu sei quais os subdiretórios diretamente abaixo, basta clicar a seta para cima que o shell vai colocar o comando anterior ls /var na linha de comando e eu só preciso digitar a pasta que quero listar, abaixo de /var. Assim eu só vou digitar /www pois ls /var foi posto no meu prompt pelo histórico:
$ ls /var/www
cgi-bin htdocs kumera-0.3.tar.gz library news tools
data index.html lib media teste.asp
Outro atalho interessante é fornecido pela característica de substituição rápida: ^string_anterior^nova_string. Com está técnica eu substituo uma string do comando anterior por uma nova string e executo novamente o código. Por exemplo eu uso o comando ls para verificar o tamanho de um arquivo qualquer, como /var/www/index.html:
# ls -l /var/www/index.html
-rw-r--r-- 1 root root 2070 2011-03-09 02:17 /var/www/index.html
E decido compactá-lo. basta substituir ls -l por gzip:
# ^ls -l^gzip
gzip /var/www/index.html
Isto se torna extremamente útil quando estamos lidando com comandos muito extensos que possuem diversos pipes, argumentos muito longos, etc... e iremos executar comandos diferentes com argumentos repetidos ou argumentos diferentes com o mesmo comando.
Os comandos digitados pelo usuário ficam armazenados no arquivo $HOME/.bahs_history
$ cat .bash_history | nl | tail
466 modprobe -lt net
467 locate modules.dep
468 cat /lib/modules/2.6.32-31-generic/modules.dep
469 lsmod
470 lsmod | sort
471 grep vboxnetadp /lib/modules/2.6.32-31-generic/modules.dep
472 grep vboxdrv /lib/modules/2.6.32-31-generic/modules.dep
473 modprob -l
474 modprobe -l
475 wc -l $(modprobe -l)
476 modprobe -l | wc -l
Configuração do Histórico:
As principais configurações do histórico podem ser vistas e alteradas nas variáveis de ambiente HISTSIZE, HISTFILE e HISTCMD. HISTSIZE contém o tamanho do buffer de comandos do history, ou seja, quantos comandos serão armazenados pelo HISTFILE. HISTFILE contém o path do arquivo que armazena o histórico. E HISTCMD contém o número do próximo comando do histórico:
$ echo $HISTSIZE
500
$ echo $HISTFILE
/home/thiago/.bash_history
$ echo $HISTCMD
511
Apesar de HISTSIZE estar configurada para 500 e HISTCMD marcar 511 o meu arquivo de histórico contém apenas 500 comandos, mas seu número inicial não está mais em 1. Você pode ver a lista de todos os comandos do histórico com o comando history:
$ history
14 ls -R /etc/apache2
15 ls -Rd /etc | wc -l
16 ls -d /etc
17 ls -R /etc | wc -l
18 sudo ls -R /etc | wc -l
19 sudo ls -R /etc | wc -l
20 sudo ls -Ra /etc | wc -l
21 sudo ls -Ra /etc
22 sudo ls -Rla /etc
23 echo `date`
... saída omitida.
O buffer de comandos do histórico pode ser limpo com o comando history -c
$ history -c
$ history
15 history
Nota: As variáveis do histórico estão definidas nos arquivos de configuração do seu shell.
Atalhos interessantes do History.
O history nos fornece atalhos muito interessantes, veja:
!! => executa o último comando digitado
!n => executa o comando de número n, exemplo:
$ history
15 history
16 grep HIST* .profile
17 ls .profile
18 cat .profile
19 cat .bashrc #vamos usar o atalho para executar este comando.
20 history
$ !19
cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
...saída omitida
!string => executa o comando mais recente que inicia com “string”
!?string => executa o comando mais recente que contém “string”
Onde obter mais informações: para obter mais informações sobre o history do Linux:
comandos:
man history
man fc ou info fc
man bash
Espero que este artigo o ajude a entender um pouco mais sobre Linux. Mais sobre Linux, certificações e Segurança da informação: http://www.ticursos.net. Abraços.

Você está em:
canal Infra
Publicidade
Ticursos.net - Thiago Glauco
Space do autor
Analista de Sistemas, administrador de redes,
Desenvolvedor.
Certificação:
ITIL
Linux+ & LPI
Gestor de segurança da informação
site: www.ticursos.net.
Cursos de C, Perl e Linux
Space do autor


0
0
