首页 理论教育 创建符号链接和硬链接命令ln

创建符号链接和硬链接命令ln

时间:2023-11-18 理论教育 版权反馈
【摘要】:建立符号链接用命令ln,它的命令格式为:建立符号链接时,选项-s或者--symbolic是必须的。例如,建立目标为目录/var/log/samba的符号链接:删除一个符号链接文件,不影响它的目标文件。ln命令还可以用来建立硬链接,格式为:硬链接是已存在文件的另一个名字。

创建符号链接和硬链接命令ln

Windows下有快捷方式,Linux下对应的是符号链接(symbolic links)。建立符号链接用命令ln,它的命令格式为:

建立符号链接时,选项-s或者--symbolic是必须的。建立一个名字为sym_a.txt、目标为文件a.txt的符号链接:

建立成功后,用ls命令查看:

上例中,sym_a.txt所在的那一行的第一个字符为小写字母l,l表示文件类型是符号链接。sym_a.txt的字节数为5,因为它的目标为a.txt,5实际上是字符串a.txt的长度。在命令ln-sa.txtsym_a.txt中,源文件a.txt如果不存在(这种情况叫做断链),命令也可以成功执行;或者运行完命令ln-sa.txt sym_a.txt之后,再把a.txt删除,也是允许的。有的Linux系统,若源文件不存在(断链时),符号链接文件的颜色为红闪(实际上,当用ls -l特别是ls -lF查看断链的符号链接文件时,有的Linux系统,其颜色是红闪,有的用不同的背景色来映衬;很多Linux系统对文件的不同类型、不同权限(后面很快要讲权限)等可以通过颜色来区分,如何区分、用什么颜色、或用什么背景色等都是可以配置的,本节不展开讨论这方面的内容)。

建立一个名字为temp.txt、目标为test目录下面的文件s.txt的符号链接:

上例中temp.txt的字节数为10,因为它的目标为test/s.txt,10就是字符串test/s.txt的长度。

也可以针对目录建立符号链接。例如,建立目标为目录/var/log/samba的符号链接:

删除一个符号链接文件,不影响它的目标文件。例如:

符号链接也叫软链接。ln命令还可以用来建立硬链接,格式为:

硬链接是已存在文件的另一个名字。建立硬链接之前,“源”文件必须存在,否则会出错。这一点与符号链接不同。下面的命令中,如果x.cpp不存在,会出现No such file的提示:

下面举例说明硬链接的概念。假设当前目录下有一个文件b.txt:

将p_hard_link.txt创建为b.txt的硬链接:

学习硬链接时,很多时候会与文件的复制搞混,为了对比硬链接和复制,将b.txt复制到q_copy.txt,然后查看一下它们:

可见,b.txt和p_hard_link.txt的硬链接数为2(信息的第二部分的数值为2),再创建一个b.txt的硬链接的话,这个数字将变为3;而q_copy.txt的这个数字为1。从上面的命令结果还可以发现,p_hard_link.txt的信息的首字符为“-”而不是小写字母l,表明它是普通文件。(www.xing528.com)

查看一下它们的内容,是一模一样的:

ls命令的选项-i或者--inode用来显示文件的inode号。这里不展开讲解inode号,简单地说,它像是一个不能重复的标号一样,每个文件或目录对应一个inode号。可见b.txt与p_hard_link.txt的inode号相同,而q_copy.txt的inode号与它们的不同:

修改b.txt(或者p_hard_link.txt)的内容,那么p_hard_link.txt(或者b.txt)也随之变化,它们的内容和修改时间总是保持一致的,实际上,它们互为硬链接。而q_copy.txt是对b.txt的简单复制,复制完成后,它们两个就“毫不相干”了,修改q_copy.txt(或者b.txt)的内容,不会影响b.txt(或者q_copy.txt)。

下面修改p_hard_link.txt,命令当中使用了输出重定向(后面将讲解重定向),意思是将echo命令显示的内容(引号中)存入文件p_hard_link.txt并覆盖原有的内容:

查看一下文件p_hard_link.txt的内容:

再查看b.txt的内容,与p_hard_link.txt的一致:

查看一下它们三个,可见b.txt和p_hard_link.txt的字节数都变为了25,修改时间都更新到12:28了(互为硬链接的文件是“联动”的),而q_copy.txt没有变化:

下面,先删除b.txt,再查看b.txt和p_hard_link.txt,可见,p_hard_link.txt仍然存在,inode、字节数、修改时间等不变,只是硬链接数减少了1:

文件p_hard_link.txt的内容不变,未受到b.txt被删除的影响:

就是说,如果某文件不小心被删除了,而它的硬链接文件仍然存在的话,那么“源”的内容可以很容易地找回来。而符号链接,如果“源”不小心被彻底删除了,那么其内容几乎无法找回。如果希望两个或多个不一定在同一目录下的文件的内容总保持一致,并且希望相互备份,就可以使用硬链接。硬链接就是:一个文件,多个文件名,每删除一个链接文件则减少一个名字(链接数减少1),当最后一个链接被删除后,文件才被删除。

硬链接有一个限制,链接在一起的文件必须处在同一个文件系统,否则,当链接它们时,ln命令会出错,而符号链接没有这个限制(要知道当前的Linux有哪些文件系统,执行df命令,输出每一行的第一个字段是文件系统名)。

硬链接还有一些限制:有的Linux不允许建立目录的硬链接,有的Linux只允许超级账户(如root)建立目录的硬链接。例如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈