为什么bash将"???"设置为"lib"?

3
请注意以下事项:
[user@machine deploy]$ echo ?
?
[user@machine deploy]$ echo ??
??
[user@machine deploy]$ echo ???
lib
[user@machine deploy]$ echo ????
????

echo ???是什么情况?为什么要使用“lib”?

我在我的环境变量或.bashrc中没有看到任何内容,而且在不同的机器上也不一致(在我的开发机器上,字符串“???”保持不变,这对我进行测试很有用)。

我可以轻松地解决这个问题——“???”作为占位符值完全是任意的。但现在我很好奇。有人有什么想法吗?

谢谢。

2个回答

7
在shell中,通配符中的?代表一个字符(确切地说是一个且仅有一个字符)。因此,如果您有一个文件(或目录)的名称恰好为三个字符,则???将与其匹配。
尝试运行touch a; touch bb ; echo ? ??
如果没有与模式匹配的文件,则该模式将按原样打印,不进行替换。

1

提示1:尝试使用ls命令。

提示2:这被称为通配符匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接