ln -s: 하나의 소스에서 여러 대상으로

ln -s: 하나의 소스에서 여러 대상으로

의사코드

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

관련 정보