通配符吞噬

通配符吞噬

通配符

星号 (*) – 匹配一个或多个出现的任意字符,包括无字符。

谁能解释一下这个“不包括字符”是什么意思?

答案1

Bash 手册的措辞有点不同(只是为了选择一些来源):

*匹配任何字符串,包括空字符串

“空字符串”是零长度字符串,因此含义是*匹配任意数量的任意字符,甚至根本没有。或者,零个或多个任意字符。

foo*bar匹配例如

  • foo1bar(其中*匹配一个字符)
  • foo22bar(两个字符)
  • 但也只是foobar,其中 匹配和*之间的零长度字符串。foobar

ETC。

(此外,*.txt 也会匹配 filename ,但以点开头的文件名是一种特殊情况,除非在模式中明确给出点,或者设置了.txt类似 Bash 的内容,否则不会匹配。)dotglob

如果你想要求至少一个字符,你可以使用?*since ?require 并完全匹配一个字符。

相关内容