伪代码
ln -s $HOME/file $HOME/Documents/ $HOME/Desktop/
我想在其中创建从源到两个目标的符号链接。可能是,moreutils
并且pee
。
如何从一个来源创建多个符号链接?
答案1
您无法通过一次调用来完成此操作ln
,但您可以循环遍历所有必要的目的地:
$ for i in "$HOME/Documents/" "$HOME/Desktop/"; do ln -s "$HOME/file" "$i"; done
答案2
如果你有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
答案3
它并不比两次单独的ln -s
调用更冗长:
echo $HOME/Documents/ $HOME/Desktop/ | xargs -n 1 ln -s $HOME/file
但这仅适用于绝对路径(因为符号链接是相对于其父目录解释的,除非它们是绝对路径)。
(当然,随着链接数量的增加,相对成本会下降。此外,此代码片段依赖于$HOME
不包含任何空格、制表符或换行符的事实。)