Linux中的软链接指向同目录中的A文件时,如果这个目录被整体复制到另外的地方,那么复制得到的软链接也指向复制得到的A文件。
证明
证明如下:
temp目录下两个子文件夹,分别为AAA和BBB

现在我们目录AAA下建立目录mytxt

然后在目录mytxt中建立文本文件suwenhao.txt

suwenhao.txt中的内容如下:

现在我用下面的命令在目录AAA下创建软链接wanghong.txt,指向suwenhao.txt:
ln -s suwenhao.txt wanghong.txt


然后我们打开wanghong.txt:

发现内容如下:

现在我们把AAA中的目录mytxt复制到BBB中,


然后我们打开/home/book/temp/BBB/mytxt中的suwenhao.txt,修改内容为:2025-03-19

然后我们再打开/home/book/temp/BBB/mytxt中的wanghong.txt,看下它里面的内容是什么:


这就证明了:Linux中的软链接指向同目录中的A文件时,如果这个目录被整体复制到另外的地方,那么复制得到的软链接也指向复制得到的A文件
查看一个软链接指向的两种方法
利用ls命令查看一个软链接的指向
ls -l wanghong.txt

如果suwenhao.txt在别的目录中,那么会显示相应的路径,而不会只是一个文件名。
比如像下面这样建立一个指向别的目录中文件的软链接:
ln -s /home/book/mycode/C0037_IC2_app2/I2C_tools_control_ATP2126C.c linktest.c


我们此时在目录/home/book/temp/AAA/mytxt下执行命令:
ls -l linktest.c

此时目标文件就有完整路径了。
Ubuntu中可以直接查看软链接的文件属性获得链接指向
比如上面的两个软链接wanghong.txt和linktest.c

右键查看它们的属性值如下:


可见,当指向同目录中的文件时,也不会显示目标文件的完整路径。
单独复制一个软链接时会怎么样?
我们再新建一个目录CCC,然后把AAA/mytxt下的两个软链接linktest.c、wanghong.txt复制到目录CCC中,看下情况是怎么样的:



可见,由于wanghong.txt的软链接是相对路径,所以链接损坏了,而linktest.c是绝对路径,链接目标仍然在。
我们再把suwenhao.txt也一并复制过来。

此时再查看软链接wanghong.txt,发现仍然是链接损坏状态,如下图所示:

所以结论是假如一个软链接创建时指向的目标是同一个目录中的文件(这个同一目录的目标文件在创建链接时没有写上绝对地址),那么该软链接单独复制到别的地方时会损坏,但如果是复制整个目录,就不会损坏了。

被折叠的 条评论
为什么被折叠?



