如果有一个文件并且文件名以点开头,这是否意味着您创建了该文件并且在其中隐藏了内容,或者文件可以在不创建文件名的情况下自行创建吗?
答案1
名称中带有前导点的文件或目录(例如 )的唯一“特殊”之处在于,默认情况下.myfile
它不会显示在 的输出中。ls
它也不会与不明确匹配以点开头的文件名的文件名通配模式匹配。
假设最初是空目录:
$ touch .myfile # this creates an empty hidden file
$ ls # this will output nothing
$ echo * # this will echo a *
*
这些文件通常称为“隐藏”。但是,它们仅对文件名通配模式隐藏ls
,而不是在“秘密”、恶意、无法检测或无法被其他人读取的意义上隐藏(这取决于文件的权限及其父级的权限)文件夹)。
任何人都可以创建隐藏文件;只需在名称开头加一个点即可。文件被隐藏这一事实并不能说明它是如何创建的(由用户显式创建或通过运行某些程序创建)。例如,某些应用程序创建具有隐藏名称的目录(用于存储配置和缓存文件等),而其他应用程序则创建隐藏文件。
例如,
shell
bash
通常会.bash_history
在您的主目录中创建,其中包含您在命令提示符下键入的命令(以便您可以在以后的会话中轻松调用它们,而无需重新键入它们)。启动时,shell 还将使用您的主目录中的.bash_profile
和。.bashrc
如果这些文件存在,它们很可能在创建时已复制到您的帐户中。.ssh
如果您使用 SSH,您的主目录中可能会有一个名为的隐藏目录。该目录包含公共和私有 SSH 密钥,并且可能包含一些配置文件。其他人不应访问该目录。不太可能你手动创建此目录。许多桌面实用程序会将其配置文件存储
.config
在您的主目录下的某个位置,并将文件缓存在.cache
.同样,您不太可能手动创建这些目录。
用户主目录(和其他地方)中的配置文件通常以这种方式隐藏,这样它们就不会弄乱ls
.
要查看目录中的所有文件,包括隐藏文件,请使用-a
或-A
选项ls
(使用-A
不会显示任何 Unix 目录中存在的.
和..
名称)。
$ ls -a
. .. .myfile
$ ls -A
.myfile
在bash
shell 中,*
其他 shell 通配模式不会匹配隐藏名称。要让他们这样做,请启用dotglob
shell 选项shopt -s dotglob
。
$ echo *
*
$ shopt -s dotglob
$ echo * # the * now matches a filename, so it is replaced by it
.myfile