Pular para o conteúdo

Reexecutando comandos do console

Dica publicada em Shell Script / Introdução
Perfil removido removido
Hits: 7.765 Categoria: Shell Script Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Reexecutando comandos do console

Quem nunca precisou reexecutar um daqueles comandos complicados que merecem até um shell script, de tantas opções e parâmetros que o bicho pega? Volta e meia eu estou nessa categoria de gente.

Um exemplo típico são os "wgets", ou seja: uso demais o wget para baixar de tudo e nem sempre lembro a URL do arquivo da maioria das ISOs de distro... Para reexecutar um comando no shell basta preceder o nome do comando com o símbolo "!", assim:

!wget

Isso reexecutará o último comando "wget" com as opções.

"Legal!", você diz. Legal nada! E se o último "wget" não é o que eu preciso, hein? Faz como? Não faz? Faz sim! Só na base do "gato". Sabendo que estes comandos ficam armazenados em $HOME/.bash_history, vamos "grepar" a coisa atrás do nosso comando usando as aspas invertidas ou os parênteses de substituição. No exemplo, vou buscar a continuação de uma imagem ISO do antiX Linux que comecei baixar:

`grep antiX .bash_history`
ou
$(grep antiX .bash_history)

Estes dois comandos (ou formas de escrever o comando) produzem o mesmo resultado: o shell irá interpretar a saída do comando grep, que retornará a linha completa que encontrou no arquivo de histórico do bash, executando nosso comando com as opções.

Para outros comandos, basta lembrar algum dos parâmetros do comando a ser executado e lançar para busca no grep e, se necessário, testar antes de chamar o programa à execução, seja buscando com o grep, sem aspas e parênteses, assim:

grep antiX .bash_history

Se for necessário, utilize um pipe, de um grep no outro, como neste exemplo:

grep comando | grep regex | grep regex

até refinar a busca e sair o que precisamos.

Nem sempre esta é a melhor saída. Há ocasiões em que é melhor mesmo redigitar o comando ou buscar com as setinhas (coisa da amiga readline).

Eu uso este esqueminha para aqueles casos macarrônicos de opções, parâmetros impossíveis de lembrar e para os endereços do wget, já que estou mestre em esquecer as URLs. O mplayer é notório por suas combinações nada saudáveis de parâmetros.

Espero que tenha sido de valia.

Até a próxima.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Desabilitando modo "offline" no Firefox 3.x

Organizando as tralhas

Qual Ubuntu devo usar?

Instalando o Xconq em qualquer distribuição Linux

Sua webcam é compatível com o Linux? Descubra aqui!

Goosh.org, um shell Google

Executando uma música na partição do Windows pelo Shell

Comando "sed" com parâmetro que aceita barra " / "

explainshell.com

Aulas Shell Script do zero - Parte 8

#1 Comentário enviado por fabio em 17/12/2009 - 07:21h
Um jeito mais prático que o grep é o uso do "reverse search". Com o terminal aberto, digite Ctrl R e, no seu caso, antiX. Tenta aí! :)
#2 Comentário enviado por SMarcell em 17/12/2009 - 08:54h
Já no zsh digite a letra inicial do nome do comando e tecle Ctrl+r
#3 Comentário enviado por evaldoavelar em 17/12/2009 - 10:42h
Também uso o Ctrl-R!

Bem prático!

Contribuir com comentário

Entre na sua conta para comentar.