例如,在 中My Documents
,有以下文件夹:
.ssh
.subversion
Run Code Online (Sandbox Code Playgroud)
这是我不知道的某种命名约定吗?
use*_*686 95
这种命名约定来自类 Unix 操作系统(例如 Linux 或 OS X),它的意思是“隐藏”文件或目录。它可以在任何地方工作,但它的主要用途是在您的主目录中隐藏配置文件(例如,~/.cache/
或者~/.plan
——它们经常被称为“dotfiles”)。
在某种程度上,点文件可以被称为传统的 Unix,相当于 Windows 上的“AppData”目录。(许多 Linux 程序正在更改以遵循XDG 基本目录规范,将它们的配置~/.config/
和其他数据移至~/.cache/
& ~/.local/share/
– 这使其与AppData\Roaming
和更相似AppData\Local
。)
您在 Windows 上拥有这些.ssh
和.subversion
目录是因为您使用了一些程序(特别是OpenSSH和Subversion),这些程序已被移植为使用 Windows 系统 API 而不是 POSIX API,但尚未针对其他一些 Windows 约定进行调整。
有时会有意跳过这种改编,以使在其 Windows 系统上使用类 Unix 环境(如 Cygwin)的人的生活更轻松。例如,Cygwin 安装了一组标准的类 Unix 工具,例如ls
,它会忽略 Windows 的“隐藏”标志而只尊重.dotfile
名称。此外,使用相同的位置(例如<home>/.ssh
)可以更轻松地在 Windows 和 Linux/BSD/OSX 计算机之间同步配置。
另外:通常这些文件位于用户的主目录中,例如在 Linux 或Windows 7+ 上。它们很少被放在“文档”或“我的文档”子目录中。/home/name/.ssh
C:\Users\name\.ssh
正如 Rob Pike在 Google+ 上所写,这是一个偶然的功能:
很久以前,随着 Unix 文件系统的设计被制定出来,条目
.
和..
出现,使导航更容易。我不确定,但我相信..
在版本 2 重写期间进入,当时文件系统变得分层(它早期具有非常不同的结构)。然而,当输入 ls 时,这些文件就会出现,因此 Ken 或 Dennis 向程序添加了一个简单的测试。当时是在汇编程序中,但有问题的代码相当于这样的:
if (name[0] == '.') continue;
这个声明比它应该的要短一点,那就是
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
但是,嘿,这很容易。
结果有两件事。
首先,开了一个不好的先例。许多其他懒惰的程序员通过进行相同的简化来引入错误。以句点开头的实际文件通常在应该计算时被跳过。
其次,更糟糕的是,创建了“隐藏”或“点”文件的想法。结果,更多懒惰的程序员开始将文件放入每个人的主目录中。我没有在我用来输入的机器上安装那么多东西,但是我的主目录有大约一百个点文件,我什至不知道其中大部分是什么或者是否仍然需要它们. 通过我的主目录的每个文件名评估都会被这种累积的污泥减慢。
归档时间: |
|
查看次数: |
10729 次 |
最近记录: |