usando chaves para executar vários comandos que possuem espaços [duplicados]

0

Eu aprendi recentemente como posso usar chaves para executar vários comandos usando chaves por exemplo, eu posso criar 10 arquivos como este,

touch {1..10}.txt

ou arquivo com nomes estranhos,

touch {1..10..2}

Eu também posso reiniciar vários processos como

systemctl restart app9-{server,client,test}
O comando acima

irá reiniciar os serviços chamados app9-server , app9-client e app9-test

agora eu tenho um comando com um espaço,

vagrant destroy app9
vagrant up app9
vagrant ssh app9

Como posso executar acima de 3 comandos usando chaves?

Eu tentei

vagrant {destroy app9,up app9,ssh app9}

e

vagrant {destroy,up,ssh} app9

mas nenhum deles realmente funciona.

Alguém pode me dizer como posso executar esses comandos usando chaves?

    
por MaverickD 01.10.2018 / 05:27

2 respostas

1

Em nenhum dos casos em que você usa chaves em sua pergunta, você está executando vários comandos.

touch {1..10}.txt

executa um comando em 10 arquivos:

touch 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt

O comando

systemctl restart app9-{server,client,test}

ainda é apenas um comando:

systemctl restart app9-server app9-client app9-test

A expansão de chave é usada para executar uma expansão de texto simples de uma ou várias sequências de caracteres em um único comando.

As três tarefas que você deseja executar devem ser três comandos separados. Você pode fazer isso em um loop, se desejar:

for cmd in destroy up ssh; do
    vagrant "$cmd" app9
done
    
por 01.10.2018 / 07:37
0

Tente:

eval 'vagrant '{destroy,up,ssh}' app9;'

Observe as citações.

    
por 01.10.2018 / 05:40

Tags