De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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