回答:
これは単なる「知りたいから」の質問ですか、それとも本当のユースケースがありますか?それを成し遂げるためにいくつかの体操を行うことができます:
$ eval echo\ {a,b,c}\;
a
b
c
しかし、この種の難読化コマンドをシステムスクリプトに入れている人を追い詰めていました。
代わりに明確にするために行ってみませんか:
$ for X in {a,b,c}; do echo $X; done
あなたは何をしようとしているのかを常に理解できるように、丸ごと移動していくつかの改行を入れて少しインデントすることさえできます。
for
機能しますが、それでもタイピングが多くなります:P
eval git branch -d \{ branch-a, branch-b }\;
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
)、私はそれまでに評価されないように、ブレース展開の第二の発生を免れた後に最初のeval
コマンドを実行していました。
上記の出力が期待どおりに表示されたため、次のコマンドを実行できました。
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
マークの元の回答に感謝します。彼の答えが私にできることを好めば、彼の答えに投票してください:-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
ている場合は、27個すべての値を列挙するよりも短い形式を使用する方が適切です。