Emm*_*maV 11 shell bash echo brace-expansion
$ touch file{1..12}
$ echo *e{1..12}
file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12
$ echo *{1..12}
file1 file11 file12 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样。请问有人可以解释一下吗?
Gil*_*il' 21
大括号不是通配符模式。检查bash 扩展的文档:大括号在过程的早期扩展,通配符模式在最后一步扩展¹。
最初,该命令由两个单词echo
, 组成*{1..12}
。大括号展开后,该命令包含 13 个单词:echo
, *1
, *2
, ..., *12
。然后扩展通配符模式。*1
扩展到以 结尾的文件名列表1
,其中不仅包括file1
而且还包括file11
(之后按字典顺序排序)。同样*2
扩展为file12
和file2
(按此顺序)。所以你得到echo
, file1
, file11
, file12
, file2
,然后是匹配单个文件的其他通配符:file3
, file4
, ..., file12
。
¹紧随其后,如果您遵循手册的描述,但“引用删除”并不是真正的事情 - 引用在扩展过程之前被解析。
归档时间: |
|
查看次数: |
481 次 |
最近记录: |