Eu tenho um programa não muito permissivo para trabalhar. Infelizmente, este programa não permite apenas o seguinte
"command -a -b -c"
ou
"command -abc"
Então, eu sempre devo digitar o seguinte
command -a && command -b && command -c
Tenho certeza de que existe uma maneira mais eficiente de digitar isso, mas não consigo descobrir.
command-line
Douda
fonte
fonte
cmd -a; cmd -b; cmd -c
longo prazo, como todos os seres humanos.command
. No caso geral,command -a -b -c
,command -abc
ecommand -a && command -b && command -c
têm significado diferente ..Respostas:
Você poderia fazer:
Ou:
com algumas conchas.
Mas cuidado com o fato de que isso afeta o padrão de
command
.Com
zsh
:Ou simplesmente:
Nenhum deles seria cancelado se alguma das
command
invocações falhasse (exceto se falhar com o status de saída 255).Para isso, você deseja:
Isso ainda falha no
$?
status de saída dacommand
chamada com falha ). Você pode mudar isso para:Mas a essa altura, já é mais do que:
fonte
Você pode consultar a primeira palavra da linha de comando anterior (
command
no seu caso) pela expansão do histórico!!:0
e, em seguida, basta adicionar os argumentos necessários.Por exemplo:
Observe que, como Stéphane Chazelas apontou , isso também pode resultar em expansões inesperadas.
fonte
!!:0
(em shells que suportam a expansão do histórico do csh) será expandido para a primeira palavra da linha de comando anterior, não para o comando anterior.uname
eecho foobar && !!:0 spamegg && !!:0 baz
, em seguida , isso será expandido paraecho foobar && uname spamegg && uname baz
.!
é o suficiente:!:0
mas com os pontos do @ StéphaneChazelas, é melhor usar!#:0
onde a!#
média Toda a linha de comando digitou até agora .Que tal uma função shell envolvendo um loop?
Onde "coisa" é o comando real que você deseja chamar. Então simplesmente
Você pode até generalizar isso para qualquer comando:
Então
fonte
Entre as respostas criativas e perspicazes, aqui está algo simples em nome da digitação de menos caracteres:
fonte
Crie um script de shell MultiRun , que recebe o primeiro parâmetro como comando e o executa com os parâmetros restantes, um de cada vez.
./ MultiRun curl ABCD
Seu script deve usar curl como comando e executar "curl A", "curl B", "curl C", "curl D". Agora, como seu script está no controle, você pode decidir se uma falha em qualquer comando encerrará o script ou continuará para o próximo Parâmetro ou aguardará a entrada do usuário ou o que for. Você pode até decidir o status de saída de todo o script, com base na execução de comandos individuais.
O MultiRun Script pode ser algo assim:
Agora execute o seguinte:
./MultiRun echo 1 2 3 4
para obter a saída de "eco 1", "eco 2", "eco 3", "eco 4" como este:
1
2
3
4
É uma solução muito flexível e reutilizável.
fonte