Answers:
*\:2,*T
是要列出文件的全局模式。要了解它,我们需要记住一些事情:
:
必须逃脱在外壳中,成为 \:
因此*\:2,*T
,例如匹配一个名为TranscationNumber:2,EventType:XYT
编辑
从注释中,有必要(或没有)转义:
需求:严格来说,逃避符号不是必须的:
,但是bash会在自动完成时建议它。
:
必须逃脱?
:
不需要逃脱。它仅在特定情况下(用作命令时)是特殊的,而在全局模式中则不是。在\:
相当于:
,逃避没什么区别。
unset var; : ${var:=x}; echo $var
:
是COMP_WORDBREAKS
环境变量的默认值的一部分。在Bash自动补全中,这些字符被读取行库用作单词分隔符,并且包含冒号的文件名当然应该是一个单词。因此,bash自动
列出所有与通配符模式匹配的文件 *:2,*T
在那里,通配符*
匹配任何内容(所有可能的字符中的任意数量)
:2,
是文件/目录名称中需要出现的字符。
冒号:
是需要转义的特殊字符,因此是的形式\:2,
。
文件/目录名称必须以。结尾T
。
匹配的文件名是
:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T
COMP_WORDBREAK
默认情况下设置的环境值列表中包含该冒号。-因此,它的确不是实际的特殊字符,但是当您在命令行上使用自动补全功能并且希望/需要用冒号匹配文件名时,确实需要对它进行转义。
正如其他人指出的那样,它将以长格式列出,包含的文件:2
,并以结尾T
这看起来像在Maildir文件夹中搜索已删除(已处理)的文件。但是,为了健壮性,它应该*
在末尾添加另一个。可以添加字母顺序更高的新标志,例如Dovecot会在文件末尾添加另一个字段。