의사코드
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
공백, 탭 또는 줄바꿈이 포함되어 있지 않다는 사실에 의존합니다.)