有没有办法显示大括号扩展语句的扩展版本?
例如,我有:
$ 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}
的 被替换。a
b
如果您希望执行上述内容,您可以将其通过管道传递到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'。保留从左到右的顺序。该构造可以是嵌套的。可以引用逗号以便将它们按字面意思包含在单词中。