目前基于测试结果得到结论,暂时无权威资料显示出原因
参考了 https://blog.csdn.net/weixin_/article/details/
但是这个博客给的结果只是特殊用法,无法归结至一般结论
下面开始正式介绍
文件及目录说明
/home/
/home/xxx.txt
/home/source/
/home/source/aaa.txt --想要创建软链接的源文件
/home/source/ln.sh --执行软链接命令的脚本
/home/source/file
/home/source/file/file2
/home/source/linkresult
/home/file/
名词解释
相对路径写法的深度
../bbb.txt 深度为1层
file/ 深度为1层
../file/ 深度为2层
../file/bbb.txt 深度为2层
深度=/的个数
ln -s [源路径] [目标路径]
依旧使用上面的aaa.txt创建软链接
采用命令 ln -s aaa.txt bbb.txt,成功创建
采用命令 ln -s aaa.txt file/bbb.txt 一定失败
采用命令 ln -s aaa.txt file/bbb.txt 一定失败
采用命令 ln -s aaa.txt file/file2/bbb.txt 一定失败
也就是说,源路径没有..,目标路径只能是以脚本所在目录为基准,无法获取更深层目录
采用 ln -s ../aaa.txt file/bbb.txt 一定成功
但是 再采用 ln -s ../aaa.txt bbb.txt 一定失败
但是 再采用 ln -s ../aaa.txt ../bbb.txt 一定失败(违反规则一)
而采用 ln -s ../aaa.txt file/bbb.txt成功,则涉及到另一个机制了
aaa.txt和准备执行的脚本/home/source/ln.sh是同一个目录,那么对原路径采用../aaa.txt 与 aaa.txt有何区别?
规则三:
源路径中".."的总数量 - ".."能够正常索引到对应文件的数量=目标相对路径写法必须使用的深度
这时候aaa.txt与脚本路径已经相同,".."能够正常索引到对应文件的数量 = 0,".."的数量 = 1,差值为1,则目标文件夹的深度必须为一层
所以采用命令 ln -s aaa.txt bbb.txt,成功创建,ln -s ../aaa.txt file/bbb.txt 成功,并且ln -s ../aaa.txt bbb.txt失败(目标相对路径写法的深度为0层,而不是1层)
同理ln -s ../../aaa.txt file/file2/bbb.txt 成功(多出了两组..,则目标相对路径写法的深度必须为二层,且不可为其他层次,例如一层,零层)
继续,对脚本的上层目录的文件进行软连接
ln -s ../xxx.txt yyy.txt 成功
这里..是正常搜索目录,所以多出0组,则目标文件夹深度必须0层
如果尝试更深深度 ln -s ../xxx.txt file/yyy.txt 失败
尝试更深深度 ln -s ../xxx.txt file/file2/yyy.txt 失败
正确做法,增加..
ln -s ../../xxx.txt file/yyy.txt,因为..多出1组(../xxx.txt正常搜索到xxx.txt(1组..),..总数量为2,得到2-1=1),所以目标相对路径写法的深度必须为1层,不可为其他层次
规则四:
"文件夹名/文件名" 等同于 "文件夹名/" (因为深度相同)
但使用"文件夹名/" 时 在目标路径生成的软链接的名字同源路径的文件名或文件夹名
例如"ln -s ../aaa.txt file/" ,则会在/home/file目录下生成名为aaa.txt的软链接
"ln -s ../aaa.txt file/bbb.txt" ,则会在/home/file目录下生成名为bbb.txt的软链接
规则五:
对文件夹进行软链接,同上述规则(测试下面指令时,同名的软链接记得需要先删除旧的,否则提示file exit)
ln -s file filecopy 成功
ln -s ../file linkresult/filecopy 成功
ln -s ../file linkresult/ 成功
ln -s ../source filecopy 成功
ln -s ../../source linkresult/filecopy 成功
ln -s ../../source linkresult/ 成功
经过这么多规则后,如果没有必要,建议建软链接时源路径采用绝对路径的写法,目标路径相对绝对都可以,真的省心省事(不受规则一二三限制)
目标路径相对路径写法
ln -s /home/source/aaa.txt bbb.txt 成功
ln -s /home/source/aaa.txt ../bbb.txt 成功(我可以到脚本上级目录,甚至是通过..到任意目录都可以)
目标路径相对绝对写法
ln -s /home/source/aaa.txt home/bbb.txt 成功
ln -s /home/source/aaa.txt home/ 成功
ln -s /home/source/aaa.txt /home/source/file/file2 成功

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/34300.html