为什么我得到这个错误使用{1..9}在aix系统管理的各个方面和扩展?

StackOverflow https://stackoverflow.com/questions/805361

  •  03-07-2019
  •  | 
  •  

我运行以下代码

zgrep -c compinit /usr/share/man/man{1..9}/zsh*

我得到

zsh: no matches found: /usr/share/man/man2/zsh*

这是奇怪的,因为以下工作

echo Masi{1..9}/masi

这表明我,这个问题可能是一个错误在aix系统管理的各个方面和扩展.

是上述中的一个错误aix系统管理的各个方面和扩展对{1..9}?

有帮助吗?

解决方案

这不是一个错误,它在单词内部正常工作。你在这里遇到的麻烦是{1..9}不是像*那样的通配符表达式;正如你的echo示例所示,它是一个迭代扩展。因此,您的zgrep示例与您在命令行中键入每个备用版本完全相同,然后由于man2中没有以zsh开头的手册页,因此会出错。 (这是因为找不到匹配而错误,而不是与支具序列扩展有任何内在联系。)

如果你这样做,另一方面:

zgrep -c compinit /usr/share/man/man[1-9]/zsh*

你会得到你期望的结果,因为[1-9]是一个普通的通配符表达式。

其他提示

在aix系统管理的各个方面和扩展,如果要使用范围在文件名,zle提供 <1-n> 在任何的真实姓名,它可以扩大。这就是说:

$ touch a0b a1b a5b a7b
$ print a<0-100>b

然后击中 <Tab> 之后的最后 b 会留给你 print a0b a1b a5b a7b 扩大在线。

对于所有其他意图和目的,也许整个范围的要求,非文件和脚本用-我想表达这种使用而简洁的习惯用aix系统管理的各个方面和扩展循环:

for n ({1..50}); do print $n; done

会让你进程的整个序列的数字范围是1至50:)之后你可以做各种各样的有用的东西,如文件收集,尚不存在:

arr=($(for n ({1..50}); do print /my/path/file$n.txt; done)) && print $arr[33]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top