você está aqui: Home  → Arquivo de Mensagens

Bash - Acesso ao histórico de comandos

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 16 de julho de 2010

Em tempos de Google, ficou muito fácil consultar o oráculo para saber a sintaxe de comandos especialmente complicados. O problema é que o Google sempre traz diversas alternativas e nem todas funcionam. Não dá para abandonar o Google, mas uma vez que tenhamos acertado a forma correta de fazer, é melhor guardar a receita em outro lugar. Vejamos um exemplo. Para converter um arquivo de vídeo, do formato rmvb para o formato avi, usamos o comando ffmpeg, com a seguinte sintaxe:

  ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb
    -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X
    final_video.mp4

Entender tudo isto, todas estas opções, é um trabalho para o SuperHomem ou para a Mulher Maravilha. Temos que usar como receita mesmo, não dá para entrar em todos os detalhes destas opções. O mais conveniente é termos este comandinho guardado em algum lugar, onde possamos consultá-lo sempre que for necessário. Para isto, temos o histórico do Bash, que guarda os comandos executados no arquivo .bash_history. Na dica do dia 14 de julho explicamos como preservar de maneira mais eficiente o histórico de comandos do bash. Vamos agora aprender um pouco mais, vendo como preservar um número maior de comandos e, mais importante, como pesquisar de forma rápida e eficiente este histórico.

A primeira coisa a fazer, é aumentar o número de comandos que serão armazenados. Isto é feito acrescentando em seu arquivo .bashrc a seguinte linha:

  export HISTSIZE=1000000 HISTFILESIZE=1000000

Com isto, eu defino que serão guardados em meu arquivo .bash_history um milhão de comandos. Se o Roberto Carlos tem um milhão de amigos, em alguns anos, eu posso ter um milhão de comandos (hehehehe).

Na prática, grande parte dos comandos que emitimos são duplicados, como por exemplo, o campeão de todos, o comando ls. Para evitar que comandos duplicados consecutivos sejam armazenados, eu defino, também no arquivo .bashrc, a seguinte diretiva:

  export HISTCONTROL=ignoreboth

Não é perfeito, mas já ajuda. Eu prefiro a opção:

  export HISTCONTROL=erasedups

Este sim, é melhor, ele apaga do arquivo de histórico os comandos duplicados.

Agora, vamos ver como consultar este histórico. Para recuperar o comando citado acima, do ffmpeg, eu digito alguma coisa do comando emitido e em seguida pressiono simultaneamente as teclas CTRL + R:

  (reverse-i-search)`ff': ffmpeg -i source_video.avi input -acodec aac -ab
  128kb -vcodec mpeg4 -b 1200kb   -mbd 2 -flags +4mv+trell -aic 2 -cmp 2
  -subcmp 2 -s 320x180 -title   X final_video.mp4

Eu digitei ff e em seguida CTRL+R. Logo em seguida apareceu o comando ffmpeg completo. Para executar, basta teclar ENTER. A busca realizada foi reversa, ou seja, o arquivo de histórico é consultado de trás para a frente, buscando dos comandos mais recentes para os mais antigos. Mas eu posso também realizar uma busca usando as teclas de navegação (seta acima e seta abaixo). Com estas setas, eu posso navegar para cima e para baixo, um comando por vez, no arquivo de histórico. Se eu quiser modificar o comando, posso usar as teclas CTRL+E, para ir ao final da linha, ou CTRL+A para ir ao começo da linha. No meu sistema pessoal, a combinação CTRL+E abre a gaveta do DVD, o que é outro inconveniente. Preciso desativar este atalho no Gnome, pois estou sempre abrindo a gaveta do DVD por engano :-(

Referência

Bash tips for power users



Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

AleXBoTTi
16 Jul 2010, 12:53
Rubens, Rod , Obrigado pelas respostas !!!
Rod Elias
16 Jul 2010, 11:37
@AleXBoTTi:

Se vc quiser deixar habilitada essas opções para todos os usuários do seu sistema, então é melhor acrescentar as linhas no arquivo /etc/profile

[ ]'s
Rubens Queiroz de Almeida
16 Jul 2010, 11:24
Rod, obrigado pelo aviso, já corrigi o documento. Alex, sim, se você achar interessante você pode fazer o mesmo para a configuração bash do usuário root.
Rod Elias
16 Jul 2010, 08:23
Na linha onde você menciona o seguinte: "Para evitar que comandos duplicados consecutivos sejam armazenados, eu defino, também no arquivo .bash_history, a seguinte diretiva: ...", creio que houve um engano. O arquivo onde digitar a tal diretiva deveria ser o .bashrc, ao invés do .bash_history como foi mencionado, não?
Gracias!
AleXBoTTi
16 Jul 2010, 08:09
Tenho uma pequena duvida de iniciante, acrescentei os as linhas ao meu bash de usuario. posso acrescentar no bash do root ?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script