Continuando com a serie de tutorias Dicas de Shell, vamos para a segunda parte das dicas de como consultar o historico de comandos.Primeiro, vamos analisar a saida do comando history abaixo:teste@badtux-WS:~$ lsteste@badtux-WS:~$ lsteste@badtux-WS:~$ lsteste@badtux-WS:~$ pwdteste@badtux-WS:~$ pwdteste@badtux-WS:~$ pwdteste@badtux-WS:~$ history 1 ls 2 ls 3 ls 4 ls 5 pwd 6 pwd 7 pwd 8 history Como sabemos, a saida do comando history mostra os ultimos comandos digitados, inclusive os comandos digitados repetidamente como no exemplo acima. Podemos dizer ao history para nao exibir os comandos que foram executados na sequencia repetidamente, para isso, basta alterar o valor da variavel $HISTCONTROL como mostramos abaixo:teste@badtux-WS:~$ export HISTCONTROL=ignoredupsteste@badtux-WS:~$ lsteste@badtux-WS:~$ lsteste@badtux-WS:~$ lsteste@badtux-WS:~$ pwdteste@badtux-WS:~$ pwdteste@badtux-WS:~$ pwdteste@badtux-WS:~$ history ... 9 export HISTCONTROL=ignoredups 10 history 11 ls 12 pwd 13 historyteste@badtux-WS:~$ Conforme notamos, agora a saida do comando history nao exibira comandos que foram executados repetidamente.Outra dica interessante e dizer ao history para que ele ignore alguns comandos atraves da variavel $HISTIGNORE, ou seja, ele nao exibira no historico determinados comandos que voce especificar.teste@badtux-WS:~$ export HISTIGNORE="pwd:ls:uname"Com isso, estamos dizendo ao history para ele nao exibir os comandos pwd, ls e o uname. Veja abaixo:teste@badtux-WS:~$ tail /etc/inittabteste@badtux-WS:~$ echo "testeteste@badtux-WS:~$ echo "teste"teste@badtux-WS:~$ lsteste@badtux-WS:~$ pwdteste@badtux-WS:~$ crontab -lteste@badtux-WS:~$ history ... 14 export HISTIGNORE="pwd:ls:uname" 15 tail /etc/inittab 16 echo "teste 17 echo "teste" 18 crontab -l 19 historyteste@jeferson-WS:~$ Repare que executei diversos comandos e a saida do history exibiu todos, exceto os comandos que pedi para que ignorasse, certo?Agora vamos aprender como re-utilizar apenas um pedaco da ultima linha de comando executada. Como exemplo, vamos copiar um arquivo:teste@badtux-WS:~$ cp /root/8139too.ko /lib/modules/2.6.32-5/kernel/drivers/net/Vamos utilizar apenas um pedaco da linha acima, vamos imaginar que gostariamos de executar um ls no diretorio para onde eu copiei o arquivo, mas nao queremos digitar novamente o caminho todo do diretorio. Como faremos? Simples, basta utilizar regex! ;)teste@badtux-WS:~$ cp /root/8139too.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/net/teste@badtux-WS:~$ ls !:$ls /lib/modules/2.6.32-5-amd64/kernel/drivers/net/Utilizando o !:$ podemos utilizar a parte final do ultimo comando digitado, pois o simbolo $ representa o final da linha, ou seja, o final da linha de comando no caso do historico, como mostrado acima. Isso e bastante interessante, pois ajuda muito no dia-a-dia.Caso eu queira aproveitar o inicio da linha eu devo utilizar o simbolo ^, conforme abaixo:teste@badtux-WS:~$ cp /root/8139too.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/net/teste@badtux-WS:~$ ls !:^ls /root/8139too.koLembrando apenas que dessa forma funciona apenas com o ultimo comando digitado, nao sendo possivel utilizar partes de outros comandos executados anteriormente.Mas podemos utilizar outra forma para aproveitar partes de comandos executados anteriormente, porem utilizando outra sintaxe:teste@badtux-WS:~$ cp /root/8139too.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/net/...teste@badtux-WS:~$ ls !cp:2 ls /lib/modules/2.6.32-5-amd64/kernel/drivers/net/O comando acima, ira pegar a segunda parte da ultima execucao do comando cp. Vale lembrar que ele pega a ultima execucao do cp e nao o ultimo comando digitado.Vamos ver o mesmo exemplo, porem utilizando a primeira parte da linha de comando: teste@badtux-WS:~$ cp /root/8139too.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/net/...teste@badtux-WS:~$ ls !cp:1ls /root/8139too.koTranquilo? Espero que sim! ;)Pode parecer um pouco complicado de entender, mas quando voces comecarem a realizar os primeiros testes, acredito que as duvidas irao desaparecer e o entendimento sera tranquilo!Existem outras formas de consultar o historico de comandos, essas formas sao as mais conhecidas e estarei resumindo abaixo:Executando novamente o ultimo