这一次的笔记主要是记载Linux系统中的文件或者目录等统称文件都放在哪儿,以及分区是由什么组成的。
首先回答第一个问题,我们Linux系统中的统称文件就应该放在我们的分区之中。
那么,我们的分区的结构是怎么样的呢?
我们以下面以一张图来讲解:
首先可以看到Linux的分区由三个部分组成:超级块,i-node组,data域
超级块:在超级块中存放着链表来管理整个分区,将data域中的空闲域链接起来
i-node组:存放了很多拥有文件的属性的结构体,然后通过索引号来查找对应结构体来查找对应文件的属性。并且,包含了一些指针指向对应文件在data域的文件内容。
data域:存放了文件的内容,以及目录项等等。
目录的操作命令是怎么操作的呢?
rm 命令
我们在使用rm命令删除文件的时候,比如我们删除上图的a.txt
(由于我们受到windows系统的长时间熏陶,应该很多人都会像我这样以为是直接删除a.txt的内容),Linux系统中并不会这样做!
rm命令只会将目录项中a.txt删除,那么i-node中的索引就没了,引用计数也会减一。
也就是说,在data域中的a.txt内容没有方法去访问它,系统就会自动标记其为空闲区域。那么下一次写入数据的时候会将这片区域覆盖。
那么问题来了,如果a.txt还有个别名是q.txt,那么我们删除a.txt的时候,其在data域中的内容依然不会改为空闲,因为还有另外一条路径去对其进行访问。
cp命令
这个没有什么好说的地方,复制就是把所有东西都复制,包括目录项的信息,内容等等
mv命令
在同一个分区中,移动文件会很快的,原因就在于系统只是会将目录项从原来的目录移动到另外一个目录项之中,而文件内容是不会移动的,所以速度会比较快。
而在另一个分区中的话就另说了。
以上内容纯属本人小白初学Linux系统的一次学习笔记,如果对您有所帮助,我很高兴。若有写错或者说错的地方,请您多多包涵,望有更多大神来指点迷津,谢谢。