首页IT科技linux中文件和目录的概念是什么区别(linux下普通文件和目录文件区别详解)

linux中文件和目录的概念是什么区别(linux下普通文件和目录文件区别详解)

时间2025-07-31 00:02:48分类IT科技浏览5027
导读:文件权限一般可认为是0 123 456 789,一共十位:...

文件权限一般可认为是0 123 456 789               ,一共十位:

0:表示该文件的文件类型               。Windows里面是使用了一种文件关联的技术                      ,通过扩展名来关联相应的应用程序        ,使得双击某个文件            ,就能达到调用相应的应用程序来打开它的目的                      ,这样简单快捷                      。然而对于用户来说            ,好处是方便        ,坏处是隐藏了一个实质性的东西:文件的真正的类型                      ,与其扩展名实际上是毫无关联的        。

举例来说:一个纯粹的文本文件                ,我可以给它命名“我的歌声里.mp3                ”    ,然后在win下双击                      ,会调用相应的音乐播放器来打开                    ,结果显而易见,肯定是错误的            。那反过来                  ,一个真正的MP3文件我也可以给它命名“花名册.txt                       ”                       ,在win下双击    ,一般会调用相应的文本编辑器来打开               ,不过我说你也知道                      ,显示的一定是乱码                      。

上面两个例子是为了说明一个观点        ,某个文件真正的类型与其扩展名没一毛钱关系            。

那么在不知道文件扩展名的情况下            ,如何知道文件的类型呢?在Linux是这样的        。

Linux中文件类型只有以下这几种:

1.-                      ,普通文件                      。

2.d            ,目录文件        ,d是directory的简写                。

3.l                      ,软连接文件                ,亦称符号链接文件    ,s是soft或者symbolic的简写    。

4.b                      ,块文件                    ,是设备文件的一种(还有另一种),b是block的简写                      。

5.c                  ,字符文件                       ,也是设备文件的一种(这就是第二种)    ,c是character的文件                    。

Linux系统最原始的也只有这五种               ,所以第0位                      ,只能是以上五者之一。

那么你会有疑问        ,

1.MP3文件是是哪种?答案:普通文件                  。

2.二进制文件是哪种?答案:普通文件                       。

3.文本文件是哪种?答案:普通文件    。

4.为什么硬连接没有类型表示?答案:硬连接和软连接            ,名字上虽然只差一个字                      ,本质完全不同            ,硬连接也是文件               。其类型是普通文件                      。

为什么上面要说这么多呢?目的是为下文做知识铺垫        。

那么 123-456-789 都好说        ,了解这块儿的人都知道                      ,他们只是 用户-属组-其他 这三组之间的区别                ,我们拿其中任意一组作为例子来讲解rwx皆可            。

r:read    ,w:write                      ,x:execute                      。

我们应该如何去记忆这两者之间的区别呢??难道死记硬背?NO            。

我们应该知其然还得知其所以然                    ,下面我试图从这查询文件以及内容的本质出发,来阐述rwx权限在这两者身上为何有不同的意义!

理解下面的所说的                  ,需要关于Linux的文件系统的知识做铺垫        。如果不知道inode这个概念                       ,基本上就会很吃亏了                      。

再次强调    ,文件的内容和该文件当时所用的文件名毫无关联;该文件的类型               ,也与该文件当时的文件名                      ,毫无关系                。

查看一个文件的内容        ,实际上是这样的一个过程:

举例来说            ,你用了这个命令:cat /tmp/abc.txt

1.你只传递了一个绝对路径                      ,/tmp/abc.txt            ,系统首先要知道/tmp/abc.txt文件的inode是多少才行        ,如何得知呢?

2.记住一个规律                      ,某文件的父目录会(记录)知道该文件的inode号!(此刻我想你是不是悟出一点什么了                ,不用急    ,接着往下看)

3.那么我得到“/tmp/abc.txt      ”这个文件名                      ,我得先知道/tmp目录的情况                    ,要知道/tmp目录的情况,我得先知道/目录的情况                  ,所以我就可以从/目录开始(假设/目录的inode号是0                       ,并且这是写死的)    ,然后再去一张叫做inode-table的表中查找inode号0所指向的数据域               ,然后从数据域里面可以找到一些类似于下面的内容:(看起来像一张表                      ,不是么?其实可以想象到        ,目录文件就是一张表            ,存储了它内部有哪些文件名                      ,以及该文件名对应的inode号)

文件名 inode号

bin 18

var 19

tmp 20

... ...

好了            ,我们从“/            ”        ,这个目录文件中找到了“/tmp                        ”文件名对应的inode号                      ,就是20    。(假设啊)

4.然后我们通过inode号20                ,去inode-table里面找寻20对应的数据域    ,然后从数据域中                      ,我们又会找到一张表:(为什么又是表呢?因为“/          ”是一个目录                    ,“/tmp        ”也是一个目录,那当然数据域里面存的还是表啦)

文件名 inode号

abc.txt 8899

bbb.mp3 10088

kkk.jpg 20000

... ...

好了                  ,我们找到了/tmp/abc.txt的inode号了                       ,就是8899                      。根据上面的规律    ,我们是不是又得去inode-table里面找8899号对应的数据域了?对               ,就是这样                    。

5.我们找到inode号8899对应的数据域                      ,于是我们会发现如下一些内容:

“abcdefg                        ”(假设文件内容就是这样)

...

又有疑问了        ,为毛这次不是表了?

答案:/tmp/abc.txt文件不是目录文件了            ,它是一个普通文件                      ,他存储的一般都是一些字符串。

体现在本质上:

普通文件:存储普通数据            ,一般就是字符串                  。

目录文件:存储了一张表        ,该表就是该目录文件下                      ,所有文件名和inode的映射关系                       。

从父目录中获得本文件的inode号---->找到inode-table表中找到这个inode号对应的数据域中的起点以及其他信息---->去这个数据域中读取该文件的内容(普通文件的内容一般是字符串                ,目录文件的内容是一张表)

如果你真心看懂上面我说的了    ,那么接下来就变得简单多了    。

关键就是访问任何一个文件                      ,要看是否能搞到inode号                    ,搞不到就没辙了               。搞到inode就好说了,拿着inode号去inode表中查找即可                  ,最后找到数据域                       ,那么就可以找到文件的内容了

然后整个过程这不仅仅跟本文件权限有关    ,还跟它的父目录(还有父目录的父目录...)权限有关(是否能搞到本文件的inode)

体现在命令上:(话说这才是最实际的表象)

======

对于普通文件来说               ,rwx的意义是:

r:可以获得这个普通文件的名字和内容                      。

w:可以修改这个文件的内容和文件名        。可以删除该文件                      ,但是用户会得到是否删除写保护文件的prompt            。

x:该文件是否具有被执行的权限                      。

======

对于目录文件来说        ,rwx的意义是:

r-x:可以进入cd该目录            ,可以获得该目录下存储情况                      ,但是不能修改这个目录内部存储的文件(目录)的名字            ,也不能在该目录下新建文件和目录

-wx:可以进入cd该目录        ,但是看不到该目录下的存储情况(ls不可用)                      ,可以往该目录下添加                、修改                       、删除文件            。可以通过cat来读取该目录下的文件or目录的内容                ,由于得不到该目录下存储了那些文件    ,在不知情的情况下只能通过猜                      ,cat + 文件名获得文件内容                    ,所以这样依然不保密        。

--x:可以进入cd该目录,看不到存储情况                  ,也不能往该目录下添加      、修改            、删除文件                      。但是依然可以通过cat + xx(猜)来获得该目录下的文件的内容                。

rw-:不能进入cd该目录                       ,用ls仅仅可以获得文件名和目录名    ,因为获取不到这些文件的inode号               ,当然也不能获得该目录下的文件的内容    。不能往该目录下添加                        、修改          、删除文件                      。

======

最后总结一下吧:

1.目录文件虽然是文件(唉                      ,谁叫Linux的核心理念就是Everything is file)        ,但是存储内容的只是一张表而已            ,关于文件名和inode号的映射关系                    。

2.文件的扩展名和文件类型之间                      ,没一毛钱关系。

3.文件的文件名和文件实际存储内容之间            ,没一毛钱关系                  。

4.要知道如何查找到一个文件内容的过程                       。

5.为什么同一个文件系统移动文件要比跨文件系统快?

答:因为只需要修改某个目录中路径和inode对应关系即可        ,不需要重新写一遍数据域    。

6.什么是买来的500G的硬盘                      ,格式化完后总是少了达不到500G?

答:从本文可知                ,inode-table也是需要占用存储空间的    ,所以缺少的一部分中inode-table占用了不少               。

声明:本站所有文章                      ,如无特殊说明或标注                    ,均为本站原创发布                      。任何个人或组织,在未征得本站同意时                  ,禁止复制        、盗用                        、采集              、发布本站内容到任何网站    、书籍等各类媒体平台        。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
mac怎么删除客人用户(Mac怎么删除客人用户?苹果mac关闭/禁用客人用户方法介绍) 学电脑的好网站(电脑学习网首发微擎破解模块首页主题永和自适应代理首页使用教程-OK源码破解)