DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

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.




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Ticursos.net - Thiago Glauco

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
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03