ln -s:从一个来源到多个目的地


8

伪码

ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/

我要在其中创建从源到两个目标的符号链接。可能是moreutilspee


如何从一个来源创建许多符号链接?

Answers:


11

您无法通过一次调用来完成此操作ln,但是可以遍历所有必需的目的地:

$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done

2
如果您的基本目录中不包含空格或其他要转义的字符(例如标点符号),则可以省略引号。但是,使用引号总是在适当情况下让,让你从在目录/文件名可以很容易地包含特殊字符的其他情况下的错误习惯
塞尔

6

如果您有gnu parallel,可以尝试

parallel ln -s /path/file {} ::: /path/dest1 /path/dest2 /path/dest3

或者,将多个目标符号链接到(相同)多个目标

parallel ln -s {1} {2} ::: /path/file1 /path/file2 ::: /path/dest1 /path/dest2

2
@Masi确保parallelparallel软件包而不是从中运行命令moreutils
吉尔斯(Gillles)“所以-别再邪恶了”

5

它的详细程度不亚于两个单独的ln -s调用:

echo $HOME/Documents/ $HOME/Desktop/ | xargs -n 1 ln -s $HOME/file

但这仅适用于绝对路径(因为符号链接是相对于其父目录进行解释的,除非它们是绝对的)。

(随着链接数量的增加,相对成本当然会下降。此外,此代码段还依赖于$HOME不包含任何空格,制表符或换行符的事实。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.