我们都知道,在 Windows 下隐藏文件夹是看不到的,它们有的是系统文件,而有的则是病毒。如果非要显示的话,经过系统的警告之后,你可以以半透明的文件夹的形式看到这个文件夹,系统以此来标识一个文件夹是隐藏的,它有着“-s”的属性,受到系统保护。
那么很多人刚刚接触 Linux、OSX,就会很不习惯,因为这些操作系统的隐藏文件是以点开头来标记的,这些目录的名称甚至都不能在 Windows 下用来给文件夹命名!
当然,如果是提前命名好了的,则又可以复制粘贴到 Windows 下,嗯,也可以正常访问,只不过不再隐藏了——水土不服嘛,要不然你怎么总能够在 OSX 上看到 U 盘里多出来的奇妙目录呢?
那么,为什么 OSX、Linux 要使用这种奇葩的隐藏文件和目录的方法呢?!像 Windows 一样,直接来一个“隐藏”的属性,我们打个勾可好?
其实,这个问题由来已久。
就像 Linux 下每个目录的命名方式一样,这个隐藏文件的命名形式是有历史的:它来自一个命令的 bug.
早在以前,Linux 等操作系统没有图形界面,而命令行的话我们想要查看一个目录,则需要使用命令 ls(由于类 UNIX 操作系统有相对 Windows 更完善的权限机制,倒是并不太需要通过隐藏的方式来保护文件和目录)
我们都知道,在命令行里无论在哪个目录,总有两个目录永恒存在,那就是 点 和 点点:
1 2 3 4 5 |
╭─r0uter@logcg.local ~ ╰─➤ ls -al total 877056 drwxr-xr-x@ 79 r0uter staff 2686 6 27 23:42 . drwxr-xr-x 7 root admin 238 6 13 17:12 .. |
一个点代表了当前目录,两个点代表了上级目录,所以我们会使用切换目录命令(cd)通过切换到两个点来表示转到上级(Windows 中则是“向上”)。
1 |
#cd .. |
那么一般这一个点这个没什么用处——或者说意义不大,所以 ls 默认不会显示这个目录,即隐藏掉了这个点,只留下了点点。
但一个目录里总有那么几个平时不用但必须存在的文件(比如配置文件配置目录之类的),能够隐藏可好?(终于有人发出了隐藏的需求!)
后来人们就发现 ls 命令有个 bug,所有以点开头的名称好像都不会被显示呀!
所以这样隐藏文件的方法一来二去就传开了——时至今日,bug 变成了 feature。
😃
本文由 落格博客 原创撰写:落格博客 » 为什么 UNIX 等系统的隐藏目录以点开头?
转载请保留出处和原文链接:https://www.logcg.com/archives/1032.html
刚测试了一下,ls默认不会显示点和点点,所以用点开头代表隐藏文件挺好的,但是ls -a是可以显示所有的。
挺有意思,今天看到cp命令目标是 ~/.oh-my-zsh,然后切换到~目录发现没有这个目录,就想了解下这个问题了,获益良多,谢谢
原来是这么回事