ls
以下命令含义是什么?
ls -l *\:2,*T
ls
= 列表-l
= 长(列表)*T
可能意味着T
最后
但是那*\:2
和逗号又怎么样呢?
答案1
*\:2,*T
是要列出的文件的 glob 模式。要理解它,我们需要记住以下几点:
:
必须在壳中逃脱,成为\:
- 文件名很容易包含逗号
因此*\:2,*T
将匹配一个名为TranscationNumber:2,EventType:XYT
编辑
从评论中,关于逃避:
需求的必要性(或不必要性)有几句话:不是对于转义:
符号而言,这绝对是必要的,但是 bash 本身在自动完成时会建议这样做。
答案2
列出与通配符模式匹配的所有文件*:2,*T
通配符*
匹配任何字符(任意数量的所有可能字符),
:2,
这些字符必须出现在文件/目录名称中。
冒号:
是需要转义的特殊字符,因此格式为\:2,
。
文件/目录名称必须以 结尾T
。
匹配的文件名将是
:2,T
a:2,T
a:2,bT
abbY-$fafaf:2,<hskjhsgdfhjk>T
答案3
正如其他人所指出的,这将以长格式列出包含:2
并以结尾的文件T
这看起来像是在 Maildir 文件夹中搜索已删除(丢弃)的文件。但是,为了稳健起见,它应该*
在末尾再添加一个。可以添加字母顺序靠后的新标志,例如 Dovecot 在末尾添加了另一个带有文件大小的字段。