名称以点开头的目录有何特别之处?


25

我想知道两者之间的区别是什么:

~/somedirectory/file.txt

~/.somedirectory/file.txt

在Google上问这个问题真的很困难,因为我.什至不知道如何称呼它,我也不知道该怎么解释。但是有人可以描述包含点和排除点之间的区别吗?

Answers:


18

在类Unix系统中,所有目录都包含两个条目...,分别代表目录本身及其父目录。这些条目在大多数情况下都不是很有趣,因此ls将它们隐藏起来,shell通配符之类*就不要包含它们。更一般而言,ls通配符隐藏名称以.; 开头的所有文件。这是一种排除...允许用户从列表中隐藏其他文件的简单方法。除了从列表中排除之外,这些文件没有什么特别的。

Unix将每个用户的配置文件存储在用户的主目录中。如果所有配置文件都出现在文件列表中,则主目录将被用户每天都不在意的文件弄得一团糟。因此,配置文件始终以.:开头:通常,应用程序Foo的配置文件称为.foo.foorc。因此,用户配置文件通常称为点文件


1
“更一般地,ls和通配符隐藏其名以所有文件.,这是排除一个简单的方法.,并..和允许用户从列表隐藏其他文件。” 听起来像是这样:隐藏以点开头的文件/目录的概念实际上似乎已经隐藏起来了. ..。但是后来,人们意识到能够隐藏某些文件/目录具有价值,因此,他们开始在要隐藏的文件的开头添加一个点。是真的吗?还是只是一种猜测?
Utku 2015年

3
@Utku其实,这是倒过来,因为至少第一:原来的开发商只是为了掩盖...,但犯了一个错误。但是,由于某些用户认为它有用,因此他可能不愿修复它,并且用户配置文件开始的原因.肯定是这样,以便它们不会混淆ls主目录中的输出。我认为我们对此有一个疑问,但我找不到它,它可能已被误贴了。
吉尔斯(Gilles)'所以

15

以点开头的目录.被认为是隐藏的。这意味着:

  • ~/somedirectory~/.somedirectory是不同的目录。如果~/somedirectory存在并且做到了mkdir ~/.somedirectory,那么您不会失败并显示一条File Exists消息。

  • ls命令不会显示以.

  • ls -a会同时显示目录


6
ls -A显示以开头的文件和目录。但不包含。和..条目。
朱利安

7

有关Unix文件系统的详细信息,请检查标准。具体来说,点文件用于用户目录中的配置文件,如果程序有多个,则应将它们放在点目录中。

这会向用户隐藏文件,除非他们想找到它们。这样,它们就不会妨碍您,并且工具也不会意外地弄乱它们。


4

前导“。” 目录或文件名中的“#”会导致在执行ls命令时隐藏该目录或文件。


1
您可以查看所有以“。”开头的文件。与ls -a。
Sardathrion-恢复莫妮卡2011年

1

就像@DaveNay已经说过的那样,该时间段将导致文件或目录被隐藏。

对于您的第二个隐式问题,这是您如何在Google中搜索该问题:

只需在搜索框中输入:名称前的linux period

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.