ZSH支柱の拡張マーク

ZSH支柱の拡張マーク

中かっこ拡張文の拡張バージョンを表示する方法はありますか?

たとえば、次のようになります。

$ bundle exec rake db:{drop,create,migrate}

拡張バージョンはこれまで拡張されていますか?

$ bundle exec rake db:drop
$ bundle exec rake db:create
$ bundle exec rake db:migrate

答え1

まあ、あなたはいつもできます。

~  for i (drop create migrate) echo bundle exec rake db:$i
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate

または

~ echo bundle exec rake db:{drop,create,migrate}
bundle exec rake db:drop db:create db:migrate

答え2

この3行で表示されるには、次のものが必要です。

$ print -rl 'bundle exec rake db:'{drop,create,migrate}
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate

x{a,b}y最初のパラメーターと2番目のパラメーターが{a,b}置き換えられる2つのパラメーターを作成します。ab

上記の作業を行うには、パイプで接続するかsh(またはzsh特定のコードがない場合でも)、次のように書くことができます。zsh

eval 'bundle exec rake db:'{drop,create,migrate}$'\n'

答え3

いいえ、次に展開されます。

bundle exec rake db:drop db:create db:migrate

zsh文書では、支柱の拡張部分:

'foo{xx,yy,zz}bar' 形式の文字列は、別の単語 'fooxxbar'、'fooyybar'、および 'foozzbar' に展開されます。左から右の順序を維持します。この構文は入れ子にすることができます。カンマは文字通り単語に含まれるように引用することができます。

関連情報