中かっこを使用してスペースを含む複数のコマンドを実行する

中かっこを使用してスペースを含む複数のコマンドを実行する

最近、中かっこを使って複数のコマンドを実行する方法を学びました。たとえば、10次のようなファイルを作成できます。

touch {1..10}.txt

または奇妙な名前のファイル、

touch {1..10..2}

次のような複数のプロセスを再起動することもできます。

systemctl restart app9-{server,client,test}

上記のコマンドは名前付きサービスを再起動app9-serverし、app9-clientapp9-test

これでスペースを含むコマンドが作成されました。

vagrant destroy app9
vagrant up app9
vagrant ssh app9

中かっこを使用して上記の3つのコマンドをどのように実行できますか?

頑張りました。

vagrant {destroy app9,up app9,ssh app9}

そして

vagrant {destroy,up,ssh} app9

しかし、それらのどれも実際には効果がありませんでした。

誰かが中かっこを使ってこれらのコマンドを実行する方法を教えてもらえますか?

答え1

どちらの場合も、複数のコマンドを実行するために質問に中括弧を使用しません。

touch {1..10}.txt

10個のファイルに対してコマンドを実行します。

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

注文する

systemctl restart app9-{server,client,test}

それでもコマンドは次のようになります。

systemctl restart app9-server app9-client app9-test

中括弧拡張は、単一のコマンドで1つ以上の文字列に対して単純なテキスト拡張を実行するために使用されます。

実行する3つのタスクは3つの個別のコマンドでなければなりません。必要に応じてループでこれを行うことができます。

for cmd in destroy up ssh; do
    vagrant "$cmd" app9
done

答え2

努力する:

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

引用符を参照してください。

関連情報