No terminal eu posso usar o !!
que fará referência ao meu comando anterior.
É possível usar isso em um alias? Eu tentei, mas o que acontece é que os pontos de exclamação duplos são interpretados literalmente.
O que eu quero ter possível é:
- Eu insiro algum comando
- Digito um alias que incluirá o que foi inserido na etapa 1
Se houver uma solução usando scripts que também seja aceitável.
command-line
bash
alias
Ludwig Magnusson
fonte
fonte
fc
comando para abrir um editor de texto, porque essa é a maneira mais fácil de editar comandos longos. Deixe-me adicioná-lo à minha postagem. Além disso, talvez você possa fornecer um exemplo de comando?Respostas:
O comando que lista o último comando executado é
fc -nl -1
. Usando substituição de saída, podemos adicionar mais parâmetros ao mesmo conteúdoCitar, no entanto, pode ser um problema com essa abordagem
Uma característica muito interessante
fc
é que, se você executar ofc
comando por si só, ele abrirá o editor de texto especificado naFCEDIT
variável (na qual você provavelmente deseja armazenar~/.bashrc
) e o conteúdo da linha será o seu último comando. Para sua comodidade, sugiro que você usenano
como seu editor de texto, mas se você soubervim
- ainda melhor.Por exemplo, e se eu precisar editar uma
qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindow
linha enorme, certo? Mas comfc
, eu posso abrirvim
e editar/org/ayatana/bamf/matcher
, salvar, sair e ele será executado.fonte
Você não pode usar,
!!
mas ...Do manual :
fonte
Se você insistir em usar a
!!
sintaxe de expansão do histórico em vez defc
(já mencionado), existe uma maneira.Por padrão, a
history
expansão é desativada para sessões de shell não interativas, por exemplo, em scripts.Para ativar a expansão do histórico em scripts, ative primeiro as opções relevantes do shell:
set -o histexpand
também pode ser escritoset -H
.Agora, as operações de expansão do histórico, por exemplo
!!
, funcionariam dentro do script.fonte