OS X 中的特殊文件名;星号的语义?

OS X 中的特殊文件名;星号的语义?

我使用的是 Mac OS X 10.5,有一个名为

_Mail.grxml

处理方式很有趣。

ls -l

将显示文件,但是

ls -l *

不会。只有这一个文件;注意

ls -l | wc -l

给出 43(目录中的文件数),但是

ls -l * | wc -l

得出 42。

所以问题是 -- 是否存在 OSX 无法很好地处理的文件名?或者命令行上的 * 的语义与我预期的不同?

(请注意,这不是唯一一个名称以下划线开头的文件;其他文件都可以通过 * 顺利找到)。

答案1

你没有说你正在使用什么 shell,但是如果它是 Bash(或类似的),你可能将环境变量GLOBIGNORE设置为在执行路径名扩展时排除某些模式,例如在 中ls -l *

格洛比格诺尔
              定义文件名集的模式列表,以冒号分隔
              将被路径名扩展忽略。如果文件名与
              路径名扩展模式也匹配
              GLOBIGNORE,将其从匹配列表中删除。
$ touch _Mail.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ GLOBIGNORE=*.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
ls: cannot access _*: No such file or directory

(这是测试目录中唯一的文件。)

答案2

一个想法 - 它是以 ._ (点下划线,而不仅仅是下划线)开头的吗?

相关内容