使用OS X Yosemite,使用以下命令,我得到以下信息:

$ touch .a
$ touch b
$ /bin/ls
b
$ /bin/ls -A
.a  b
$ sudo /bin/ls
.a  b


当root和root调用时,它显示隐藏文件(名称以点开头)。以普通用户身份运行时未显示它们(如预期)。这与Linux上的ls(来自coreutilsls)的功能不同。

评论

我将这些标签误读为“ OSX不好”,并感到非常困惑。

如果大写允许使用标签,则不会造成混淆,在这里BSD和OSX更合适。

@Raystafarian很有趣,因为通常是相反的方式,人们试图用标签写句子。

#1 楼

事实证明,此功能不是Apple特有的。这通常是BSD系统的功能。

 /* Root is -A automatically. */
if (!getuid())
    f_listdot = 1;
 


最初,我能够追溯到4.4BSD-Lite的来源。在1994年的FreeBSD提交中已经导入了这些资源。

然后发现了1993年的NetBSD提交,声称它是从386BSD导入代码,并且该功能已经存在。此外,此提交表明,在1991年的386BSD 0.0版的开发过程中,据我所知,它是在4.3左右从BSD分叉的。

此注释是在开发期间首次出现4.3BSD-Reno在此提交(1989年6月27日)中的标题为“新ls的第一个工作版本”的版本。原始评论说:

 /* root sees all files automatically */
 


当天晚些时候进行了更改(我不是不过,请确保该存储库中的时间戳完全正确)以:

 /* root is -A automatically */
 


在1992年添加了大写字母和句点,使注释变成了现在的注释:

 /* Root is -A automatically. */
 


但是从快照中可以看出,此行为在1979年5月9日的2BSD中已经存在:

 Aflg = getuid() == 0;
 


我当时找不到任何实际的历史记录,但是也有这张1977年的1BSD快照,没有这些内容。而且实际上没有-A标志。

所以该功能似乎是在1977年11月(当时正在开发1BSD)和1979年5月2BSD发行之间引入的。 br />
在这次调查中,我还发现了-I标志,该标志于2005年添加到FreeBSD中以覆盖此行为,并在稍后进行了重新设计。

评论


另外,可能值得注意的是,通过以开头来隐藏文件的“功能”。是一个简单的bug-ls只应该隐藏它。目录,不是所有以..开头的内容。快进了几十年,它通常用于隐藏危险文件等,同时也用于隐藏系统配置等。因此,让管理员查看这些文件(维护文件配置或查找隐藏的恶意软件等)。

–罗安
15年6月24日在9:08

Luaan的评论参考:plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp(Rob Pike在其中解释说,隐藏“点文件”是作为错误开始的)。

–nibot
2015年6月25日,0:24

根据POSIX原理,“ ls实用程序的某些历史实现会在超级用户未指定-a选项的情况下调用ls时,显示目录中除点和点-点之外的所有条目。当“普通”用户未指定-a时调用ls时,除非它们被命名为文件操作数,否则不应看到任何名称以开头的文件的信息。” pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html

–R .. GitHub停止帮助ICE
2015年6月26日,下午3:12

它远比它老。我认为它早于SysV-BSD分裂,因为上一次我访问SysV系统时,出现了完全相同的行为。

–约书亚
15年6月28日在3:47

史诗般的答案。历史学到!

– Corey Goldberg
15年6月29日在1:24

#2 楼

这是源代码的链接。注意/* Root is -A automatically. */。这是Apple版本的BSD ls的功能。

评论


有趣的发现。执行ls时是否还可以抑制隐藏文件?

–李斯特先生
15年6月23日在17:01

嗯,看起来这不是Apple特有的功能,但它来自BSD世界吗?

– Kirelagin
15年6月23日在17:30

是的,它不是特定于苹果的。感谢您的回答,这使我步入正轨。我用Root is -A自动字符串来搜索线索。

– Kirelagin
2015年6月23日在17:53



Lister先生:您可以在许多操作系统(FreeBSD,因此也可能是OS X)上使用-I(大写i)以根目录显示点文件。

–艾伦·裘德(Allan Jude)
2015年6月25日14:23在

#3 楼

IIRC,在Usenet的早期(80年代初期)就有一个关于此的话题。添加该功能是为了安全起见,因此恶意用户无法轻易地从sysadmin / root隐藏文件/目录/可执行文件。该理论基本上是“ root可以访问所有内容,因此它应该能够看到所有内容”。

评论


听起来很合理(即使将文件转换为点文件是“隐藏”它的可疑方式)。找到这些档案将是很棒的。

– Kirelagin
15年6月26日在11:11