请选择 进入手机版 | 继续访问电脑版

[LINUX] linux下平凡 文件和目次 文件区别详解

[复制链接]
查看100 | 回复2 | 2021-9-5 03:59:10 | 显示全部楼层 |阅读模式

文件权限一样平常 可以为 是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占用了不少。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 压后牙 | 2021-9-12 23:25:09 | 显示全部楼层
强,我和我的小伙伴们都惊呆了!
回复

使用道具 举报

最近压力山大啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则