显示 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}的 被替换。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'。保留从左到右的顺序。该构造可以是嵌套的。可以引用逗号以便将它们按字面意思包含在单词中。

相关内容