<ins id='67ryo'></ins><i id='67ryo'><div id='67ryo'><ins id='67ryo'></ins></div></i>

  • <tr id='67ryo'><strong id='67ryo'></strong><small id='67ryo'></small><button id='67ryo'></button><li id='67ryo'><noscript id='67ryo'><big id='67ryo'></big><dt id='67ryo'></dt></noscript></li></tr><ol id='67ryo'><table id='67ryo'><blockquote id='67ryo'><tbody id='67ryo'></tbody></blockquote></table></ol><u id='67ryo'></u><kbd id='67ryo'><kbd id='67ryo'></kbd></kbd>
    1. <fieldset id='67ryo'></fieldset>

      <code id='67ryo'><strong id='67ryo'></strong></code>
      <acronym id='67ryo'><em id='67ryo'></em><td id='67ryo'><div id='67ryo'></div></td></acronym><address id='67ryo'><big id='67ryo'><big id='67ryo'></big><legend id='67ryo'></legend></big></address>
      <i id='67ryo'></i>
      <span id='67ryo'></span>
        <dl id='67ryo'></dl>

            linux下普通文件和目录文件有什么区别

            • 时间:
            • 浏览:10
            • 来源:124软件资讯网

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