昨天我发现了一些相当有趣的东西。 ls和ls -a不显示.app"目录的工作不足?"但是如果你知道路径,你可以进入应用程序的bin文件。这是为什么?
答案 0 :(得分:0)
我不是Mac世界,但一般来说,当被问及给定目录的内容时,文件系统会提供一个名单列表;当被要求输入该目录中的特定条目时,即使之前未列出该条目,也可以自由返回值。这两个函数通常是独立的,但当然大多数文件系统在大多数情况下保持这些一致性。看来,OSX故意打破这种一致性。
示例:
/foo/bar
的内容,并返回条目xyz
,abc
和blah
的列表。这意味着条目/foo/bar/xyz
,/foo/bar/abc
和/foo/bar/blah
存在。stat()
的{{1}}时,可以假设文件系统现在必须回答/foo/bar/ghi
或类似的错误。但事实上,它没有必要。它可以返回统计信息,这意味着路径是目录或类似的。虽然这种情况一般不常见,但操作系统本身和大多数工具都可以很好地处理这种情况。像No Such File
或ls
这样的工具依赖于目录条目列表,因此它们只处理文件系统返回的条目。但是如果给出一个明确的路径(它不是目录条目列表的一部分),它们将处理该路径。
您可以进行测试:如果find
没有列出ls -la /Applications/
,您可能仍然可以直接输入MATLAB_R2013a_Student.app
来获取信息。
更多备注:您是否输入该目录(ls -la /Applications/MATLAB_R2013a_Student.app
)无关紧要。 cd
可以在任何存在的目录上完成,并为其(以及对于其父项)具有执行权限的目录完成。 cd
的{{1}}标记还会列出以-a
开头的文件,但不会将其视为"隐藏",仅" system",i 。即与正常的用户交互无关。大多数点文件都是配置文件等。