使用ls甚至ls -a看不到.app的bin

时间:2015-07-31 21:37:37

标签: macos unix

昨天我发现了一些相当有趣的东西。 ls和ls -a不显示.app"目录的工作不足?"但是如果你知道路径,你可以进入应用程序的bin文件。这是为什么?

1 个答案:

答案 0 :(得分:0)

我不是Mac世界,但一般来说,当被问及给定目录的内容时,文件系统会提供一个名单列表;当被要求输入该目录中的特定条目时,即使之前未列出该条目,也可以自由返回值。这两个函数通常是独立的,但当然大多数文件系统在大多数情况下保持这些一致性。看来,OSX故意打破这种一致性。

示例:

  • 要求文件系统提供目录/foo/bar的内容,并返回条目xyzabcblah的列表。这意味着条目/foo/bar/xyz/foo/bar/abc/foo/bar/blah存在。
  • 当被问及路径stat()的{​​{1}}时,可以假设文件系统现在必须回答/foo/bar/ghi或类似的错误。但事实上,它没有必要。它可以返回统计信息,这意味着路径是目录或类似的。

虽然这种情况一般不常见,但操作系统本身和大多数工具都可以很好地处理这种情况。像No Such Filels这样的工具依赖于目录条目列表,因此它们只处理文件系统返回的条目。但是如果给出一个明确的路径(它不是目录条目列表的一部分),它们将处理该路径。

您可以进行测试:如果find没有列出ls -la /Applications/,您可能仍然可以直接输入MATLAB_R2013a_Student.app来获取信息。

更多备注:您是否输入该目录(ls -la /Applications/MATLAB_R2013a_Student.app)无关紧要。 cd可以在任何存在的目录上完成,并为其(以及对于其父项)具有执行权限的目录完成。 cd的{​​{1}}标记还会列出以-a开头的文件,但不会将其视为"隐藏",仅" system",i 。即与正常的用户交互无关。大多数点文件都是配置文件等。