名称中带有前导点的文件或目录的唯一“特别之处”.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)
在bash
shell 中,*
其他 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)
归档时间: |
|
查看次数: |
8085 次 |
最近记录: |