Linux中文件编程的基本知识(3)

前言:在Linux中使用什么来识别一个文件呢?

我们先在终端上输入命令: ls -i 看看会有什么信息出现。

think@Ubuntu:~$ ls -i

显示的信息


1048577    bin        523 initrd.img       524289 mnt            1 sys
1179649   boot        13 initrd.img.old   655361 opt       793170

可以看到每个文件前都有一个编号,在Linux中就是靠这个编号来识别一个文件的。

那么这些编号叫啥名字呢----》索引节点号

Tiger-John总结;

可以通过命令:  ls -i来查看一个文件的索引号。


那什么叫索引节点,它有什么作用呢。


一.索引节点
Linux 文件系统使用索引节点来记录文件信息,索引节点是一个数据结构,它包含文件的长度、创建时间、修改时间、权限、所属关系、磁盘中的位置等信息。每个文件或目录都对应一个索引节点,文件系统把所有的索引节点形成一个数组,系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。文件系统正是靠这个索引节点号来识别一个文件。

我们上面提到了有一种文件是链接文件,它是干么的呢,有什么作用?

1.链接

1>什么叫链接:

对一个已经存在的文件再建立一个新的链接,而不复制文件的内容得用户无论使用哪一个文件名
都可以访问到同一文件,提高了文件的共享。


2>在Linux中有硬链接和软链接(就是我们所说的符号链接)之分。

3>硬链接(hard link)就是让一个文件对应一个或多个文件名,或者说把我们使用的文件名和文件系统使用的节点号链接起来,这些文件名可以在同一目录或不同目录。一个文件有几个文件名,我们就说该文件的链接数为几。

(硬链接就好比给文件令起了一个别名而已)


缺点:

一是不允许给目录创建硬链接。

二是只有在同一文件系统中的文件之间才能创建链接。

人们始终是在不断的追求完美,因此为了克服硬链接的缺点,----->就出现了符号链接。

4>符号链接实际上是一种特殊的文件,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件。系统会自动把对符号链接的大部分操作(如读、写等)变为对源文件的操作,但某些操作(如删除等)就会直接在符号链接上完成。

因为符号链接实际上的存放的是一个文件的路径名,因此它可以跨目录,跨文件系统。但是这一切的优点,都是要付出巨大代价的----->软链接要新建立一个索引节点 。


-----------------------------------------------------------------------------------------------------------

说了这么多我们来体验下如何用shell命令来对一个已经存在的文件建立一个链接呢?

二如何给一个文件建立一个链接

1.给一个文件建立一个硬链接

首先在终端输入命令: ln  tiger.c  myhlink.c

就实现了个已经存在的文件tiger.c 创建一个硬链接 myhlink.c。它们之间有什么关系呢?

(硬链接都是指向同一个文件,所以它们的索引节点号应该是相同的)

我们用命令来验证下  : ls -i 可以看看是否到底他们的索引号相同。

过程实例:

think@ubuntu:~/test$ ln tiger.c myhlink.c
think@ubuntu:~/test$ ls -i
931356 myhlink.c  931356 tiger.c

通过上面所显示的信息可以看到它们的索引号是相同的。


2.给一个文件建立一个符号链接

首先:在终端输入命令: ln -s tiger.c myslink.c

然后:输入名令:  ls -i


来看看它们之间的索引号是否相同?

(因为软链接并没有指向这个文件,只是在这个文件中存了原有文件的地址,所以它们的索引号是不同的)

过程实例:

think@ubuntu:~/test$ ln -s tiger.c myslink.c
think@ubuntu:~/test$ ls -i
931346 myslink.c  931331 tiger.c

通过上面的结果可以看出它们两者的索引编号不一样。

Tiger-John总结:

1>用 shell 命令: ln  filename1  filename2 可以实现给filename1 创建一个硬链接filename2。

2> 用 shell 命令:ln -s filename1  filename2 可以实现给filename1 创建一个软链接filename2。

3> 用 shell 命令: ls -i 可以查看文件的索引号

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwszjx.html