GNU/Linux >> Linux の 問題 >  >> Linux

ブレース展開:1 行で展開する代わりに複数のコマンドを実行しますか?

これは単なる「知りたいから」の質問ですか、それとも実際の使用例はありますか?体操をしてやり遂げることができます:

$ eval echo\ {a,b,c}\;
a
b
c

しかし、私は、この種の難読化コマンドをシステム スクリプトに入れている人を追い詰めます。

代わりに明快さを求めない理由:

$ for X in {a,b,c}; do echo $X; done

何をしようとしているのかを常に理解できるように、完全に独り占めして、改行をいくつか入れて少しインデントすることもできます。


Mark Mann の選択した回答に基づいて、この例をさらに導き出すことができました。これはうまく機能します:

$ eval echo\ category_{17,32,33}.properties\{,.bak\}\;
category_17.properties category_17.properties.bak
category_32.properties category_32.properties.bak
category_33.properties category_33.properties.bak

それが示しているのは、行内でブレース展開を複数回使用している場合、マークの元の例ではすべてのバリエーションが個別に印刷されていたということです。代わりに、彼の答えを使用して複数のファイルを移動/名前変更したかったのです。出力が mv の形式と一致していることを確認するには 通常は (mv oldfilename newfilename )、ブレース展開の 2 回目の発生をエスケープして、 まで評価されないようにしました 最初の eval コマンドが実行されました。

上記の出力が期待どおりに表示されたので、次のコマンドを実行できました:

$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak  category_32.properties.bak  category_33.properties.bak

マークの元の回答に感謝します。彼の答えが私にできることを気に入ったら、彼の答えに賛成票を投じてください:-)


Linux
  1. 1つのSudoで一連のコマンドを実行しますか?

  2. システムの非アクティブによるコマンドのスケジューリング?

  3. Makefileで1行の状態チェックイン?

  1. 一行FTPサーバー

  2. 複数の Linux コマンドを 1 行にまとめて実行する

  3. bash で複数のバックグラウンド コマンドを 1 行で実行するにはどうすればよいですか?

  1. パイプコマンドはどのような順序で実行されますか?

  2. docker run へのコマンドライン引数

  3. bash スクリプトのコマンドは並行して実行されますか、それとも次々に実行されますか?