将多个文件符号链接到现有文件夹

Ale*_*lls 4 linux macos symlink ln

我有这个命令:

ln -sf src/* lang/golang/src/genericc/
Run Code Online (Sandbox Code Playgroud)

我想将 src 中的所有文件符号链接到现有的 genericc 目录,但是当我运行上述命令时,我在目标中得到损坏的符号链接。有人知道怎么做吗?

Gor*_*son 11

使用相对路径(即源路径不以“/”开头)创建的符号链接将相对于链接所在的目录进行解析。这意味着指向 lang/golang/src 中的“src/foo.c”的链接/genericc/ 目录将尝试解析为 lang/golang/src/genericc/src/foo.c ,它可能不存在。

解决方案:要么使用源文件的绝对路径,如下所示:

ln -sf /path/to/src/* lang/golang/src/genericc/
Run Code Online (Sandbox Code Playgroud)

或者,要使*通配符与正确的命令一起正常工作,cd到目标目录,以便相对路径在创建期间的工作方式与解析期间的工作方式相同:

cd lang/golang/src/genericc
ln -sf ../../../../src/* ./
Run Code Online (Sandbox Code Playgroud)