文件名前面带点

Reg*_*edo -1 filenames

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

Kus*_*nda 9

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

假设初始为空目录:

$ touch .myfile    # this creates an empty hidden file
$ ls               # this will output nothing
$ echo *           # this will echo a *
*
Run Code Online (Sandbox Code Playgroud)

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

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

例如,

  • bash外壳通常会创建.bash_history在你的主目录,这里包含了在命令提示符下输入的命令(这样你可以很容易地回忆起他们在以后的会话,而无需重新输入他们)。启动时,shell 还将在您的主目录中使用.bash_profile.bashrc。如果这些文件存在,它们很可能在创建时已复制到您的帐户中。

  • 如果您使用 SSH,那么.ssh您的主目录中很可能有一个隐藏目录。该目录包含 SSH 公钥和私钥,还可能包含一些配置文件。其他人不应访问此目录。这是不可能的,你手动创建该目录。

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

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

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

$ ls -a
.       ..      .myfile
Run Code Online (Sandbox Code Playgroud)
$ ls -A
.myfile
Run Code Online (Sandbox Code Playgroud)

bashshell 中,*其他 shell 通配模式将不匹配隐藏名称。要让他们这样做,请dotglob使用shopt -s dotglob.

$ echo *
*
Run Code Online (Sandbox Code Playgroud)

$ shopt -s dotglob
$ echo *            # the * now matches a filename, so it is replaced by it
.myfile
Run Code Online (Sandbox Code Playgroud)