为什么Windows上的某些文件/文件夹名称前面带有点号?


Answers:


94

此命名约定来自类似Unix的操作系统(例如Linux或OS X),在这里它表示“隐藏”的文件或目录。它可以在任何地方使用,但其主要用途是将配置文件隐藏在您的主目录中(例如,~/.cache/~/.plan–通常被称为“ dotfiles”)。

点文件在某种程度上可以称为传统Unix,相当于Windows上的“ AppData”目录。(许多Linux程序都进行了更改,以遵循XDG基本目录规范,将其配置~/.config/移至~/.cache/&并将其他数据移至&~/.local/share/–使其与AppData\Roamingand 更加相似AppData\Local。)

您在Windows上拥有这些.ssh.subversion目录,因为您已经使用了某些程序(特别是OpenSSHSubversion),这些程序已移植为使用Windows系统API而不是POSIX,但尚未针对其他Windows约定进行调整。

有时会故意跳过这种修改,以使在Windows系统上使用类似Unix的环境(例如Cygwin)的人们的生活更加轻松。例如,Cygwin安装了标准的类似Unix的工具集,例如ls,它会忽略Windows的“ hidden”标志,而只会使用.dotfile名称。同样,使用相同的位置(例如<home>/.ssh)可以使在Windows和Linux / BSD / OSX计算机之间的配置同步更加容易。

另外:通常,这些文件位于用户的主目录中,例如,在Linux或Windows 7+上。很少将它们放在“文档”或“我的文档”子目录中。/home/name/.sshC:\Users\name\.ssh


正如Rob Pike 在Google+上所写的那样,这是一个偶然的功能:

很久以前,随着Unix文件系统设计的制定,条目...出现使导航变得更加容易。我不确定,但是我相信..在版本2重写期间,文件系统变成了分层结构(早期它的结构非常不同)。但是,当键入ls时,这些文件就会出现,因此Ken或Dennis都对该程序添加了一个简单的测试。当时是在汇编程序中,但是有问题的代码等效于以下内容:

if (name[0] == '.') continue;

该语句比应有的语句短一些,即

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

但是,这很容易。

结果有两件事。

首先,建立了一个错误的先例。许多其他懒惰的程序员也通过同样的简化来引入错误。以句点开头的实际文件在应计数时通常会被跳过。

其次,更糟糕的是,创建了“隐藏”或“点”文件的想法。结果,更多懒惰的程序员开始将文件拖放到每个人的主目录中。我用来键入此内容的机器上没有安装太多东西,但是我的主目录中有大约一百个点文件,我什至不知道其中大多数是什么还是是否仍需要它们。累积的污泥会减慢通过我的主目录进行的每个文件名评估的速度。


谢谢!很彻底 在我的“ C:\ users \ <用户名> \”文件夹中,我尝试在Windows PowerShell中以及在Cygwin Terminal中再次使用“ ls”命令。PowerShell将列出该点文件并隐藏AppData,而Cygwin Terminal则完全相反。有趣!Cygwin正在使用Unix约定。
Niko Bellic,2014年

@NikoBellic:Unix / Cygwin ls可以-a选择列出所有文件。
grawity 2014年

1
@Ruslan:例如:VMS根本没有隐藏文件;你刚刚结束了之类的东西LOGIN.COM或者DECW$MAIL.DAT 在你的home目录。(我不确定当时还流行哪些其他系统。)Unix是最近才创建的。它根本没有任何约定。
grawity 2014年

2
@grawity MS-DOS 1.0是Digital Research完成的DEC风格的O / S,并由Microsoft收购,Microsoft当时从事Unix业务。MS-DOS 2.0和更高版本添加了分层文件系统和一些Unix约定,包括..“ up dir”。微软实际上宣传了这些“先进的Unix功能”。
弗雷德·福

1
@grawity嗯,是西雅图计算机产品公司(DRAC)克隆了DRI的CP / M。抱歉。但是我的观点是,微软在80年代初还是Unix商店,而DEC系统并不是唯一的出发点。(Unix最初在DEC硬件上运行,但我认为CTSS和Multics的影响要大于DEC OS。)
Fred Foo 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.