文件名前面带点

文件名前面带点

如果有一个文件并且文件名以点开头,这是否意味着您创建了该文件并且在其中隐藏了内容,或者文件可以在不创建文件名的情况下自行创建吗?

答案1

名称中带有前导点的文件或目录(例如 )的唯一“特殊”之处在于,默认情况下.myfile它不会显示在 的输出中。ls它也不会与不明确匹配以点开头的文件名的文件名通配模式匹配。

假设最初是空目录:

$ touch .myfile    # this creates an empty hidden file
$ ls               # this will output nothing
$ echo *           # this will echo a *
*

这些文件通常称为“隐藏”。但是,它们仅对文件名通配模式隐藏ls,而不是在“秘密”、恶意、无法检测或无法被其他人读取的意义上隐藏(这取决于文件的权限及其父级的权限)文件夹)。

任何人都可以创建隐藏文件;只需在名称开头加一个点即可。文件被隐藏这一事实并不能说明它是如何创建的(由用户显式创建或通过运行某些程序创建)。例如,某些应用程序创建具有隐藏名称的目录(用于存储配置和缓存文件等),而其他应用程序则创建隐藏文件。

例如,

  • shellbash通常会.bash_history在您的主目录中创建,其中包含您在命令提示符下键入的命令(以便您可以在以后的会话中轻松调用它们,而无需重新键入它们)。启动时,shell 还将使用您的主目录中的.bash_profile和。.bashrc如果这些文件存在,它们很可能在创建时已复制到您的帐户中。

  • .ssh如果您使用 SSH,您的主目录中可能会有一个名为的隐藏目录。该目录包含公共和私有 SSH 密钥,并且可能包含一些配置文件。其他人不应访问该目录。不太可能手动创建此目录。

  • 许多桌面实用程序会将其配置文件存储.config在您的主目录下的某个位置,并将文件缓存在.cache.同样,您不太可能手动创建这些目录。

用户主目录(和其他地方)中的配置文件通常以这种方式隐藏,这样它们就不会弄乱ls.

要查看目录中的所有文件,包括隐藏文件,请使用-a-A选项ls(使用-A不会显示任何 Unix 目录中存在的...名称)。

$ ls -a
.       ..      .myfile
$ ls -A
.myfile

bashshell 中,*其他 shell 通配模式不会匹配隐藏名称。要让他们这样做,请启用dotglobshell 选项shopt -s dotglob

$ echo *
*
$ shopt -s dotglob
$ echo *            # the * now matches a filename, so it is replaced by it
.myfile

相关内容