如何在保持相对路径的同时创建到另一个符号链接的符号链接而不遵循符号链接?

时间:2021-03-16 20:05:43

标签: bash symlink ln

如何在不遵循目标符号链接但保留目标符号链接和创建的符号链接之间的相对路径的情况下创建到另一个符号链接的符号链接?

使用以下结构进行测试

├── dst
│   
└── src
    ├── file.txt -> folder/file.txt
    └── folder
        └── file.txt


lrwxrwxrwx 1 user group 15 mars  16 20:05 src/file.txt -> folder/file.txt

每次我尝试在 src/file.txt 文件夹中创建 src/folder/file.txt 的符号链接(本身是 dst 的相对符号链接)时,生成的符号链接永远不会像 dst/file.txt -> ../src/file.txt 但总是直接到达最终目标 dst/file.txt -> ../src/folder/file.txt

ln -s -r [-T] 'src/file.txt' dst/file.txt

仅在没有 -r 的情况下工作并指定自己的相对路径

ln -s '../src/file.txt' dst/file.txt

我需要在许多文件的 for 循环中递归地使用它,我想在符号链接之间保留一个相对路径,但不遵循目标符号链接,只是一个到另一个符号链接的相对符号链接。

是否可以在不遵循目标符号链接的情况下将 ln-r 相对选项一起使用?

问候

1 个答案:

答案 0 :(得分:0)

似乎 ln -s -r 跟随链接..

如果没有 -r 选项,ln -s 会准确输入您输入的内容 - 因此稍后可以更改另一个链接,而第一个目录仍然有效。

# mkdir ABC
# mkdir DEF
# touch DEF/xx.txt
# ls -lAF DEF
total 8
drwxr-xr-x. 2 root root 4096 2021-03-17 11:40 ./
drwxrwxrwt. 4 root root 4096 2021-03-17 11:40 ../
-rw-r--r--. 1 root root    0 2021-03-17 11:40 xx.txt
# ln -s DEF/xx.txt 
# ls -laF
total 16
drwxrwxrwt.  4 root root 4096 2021-03-17 11:40 ./
drwxr-xr-x. 21 root root 4096 2017-03-17 14:13 ../
drwxr-xr-x.  2 root root 4096 2021-03-17 11:40 ABC/
drwxr-xr-x.  2 root root 4096 2021-03-17 11:40 DEF/
lrwxrwxrwx.  1 root root   10 2021-03-17 11:40 xx.txt -> DEF/xx.txt
# cd ABC/
# ln -s ../xx.txt 
# ls -laF
total 8
drwxr-xr-x. 2 root root 4096 2021-03-17 11:40 ./
drwxrwxrwt. 4 root root 4096 2021-03-17 11:40 ../
lrwxrwxrwx. 1 root root    9 2021-03-17 11:40 xx.txt -> ../xx.txt
# echo "ABC" > DEF/xx.txt
# cat ABC/xx.txt
ABC

所以所有软链接都是指向另一个软链接或文件的软链接 - 并没有完全解析。