是否可以在 shell glob 扩展中添加“前缀”?我的用例如下,我有一个程序需要重复选项标志以将多个文件作为输入传递:
$ ls
foo.txt bar.txt baz.txt
$ ./some-script.sh -a foo.txt -a bar.txt -a baz.txt
Run Code Online (Sandbox Code Playgroud)
我希望能够使用某种扩展来添加'-a '
到*txt
. 那可能吗?用 zsh?砸?
您可以使用所谓的glob 限定符在zsh 中执行此操作(请参阅zshexpn手册页中的Glob 限定符部分):
./some-script.sh *.txt(P:-a:)
Run Code Online (Sandbox Code Playgroud)
对于解释,我引用了手册:
P 字符串该字符串将作为单独的单词添加到每个 glob 匹配项之前。字符串的分隔方式与上述 e glob 限定符的参数相同。限定符可以重复;单词单独添加,以便生成的命令行包含单词,它们的顺序与它们在 glob 限定符列表中给出的顺序相同。
一个典型的用途是在所有出现的文件名之前添加一个选项;例如,拍?tern
*(P:-f:)
产生命令行参数-f file1 -f file2 ...
如果修饰符 ^ 处于活动状态,则将附加字符串而不是前置。Prepending 和 appending 是独立完成的,所以两者都可以用在同一个 glob 表达式上;例如通过
编写*(P:foo:^P:bar:^P:baz:)
它产生命令行参数foo baz file1 bar ...
为谨慎起见,请先检查
$ print ./some-script.sh *.txt(P:-a:)
./some-script.sh -a foo.txt -a bar.txt -a baz.txt
Run Code Online (Sandbox Code Playgroud)
如果你得到想要的结果。
归档时间: |
|
查看次数: |
558 次 |
最近记录: |