심볼릭 링크 생성-존재하는 경우 덮어 쓰기


54

파일을 만들 때마다 데이터를 가져 와서 /path/to/data/folder/month/date/hour/minute/file심볼릭 링크하고 /path/to/recent/file자동으로 수행 하고 싶습니다 .

/path/to/recent/file존재하는 경우 미리 알지 못한다고 가정하면 (존재하지 않는 경우) 작성하거나 존재하는 경우 교체하는 방법은 무엇입니까? 나는 그것이 존재하는지 확인한 다음 삭제, symlink를 수행 할 수 있다고 확신하지만 한 단계에서 원하는 것을 수행하는 간단한 명령이 있는지 궁금합니다.


대상이 존재하지만 심볼릭 링크가 아닌 경우 어떻게 하시겠습니까?
Toby Speight

답변:


34

설명서를 읽으 십시오 .

ln -sfn /new/target /path/to/symlink

$ 남자 ln

-n, --no-dereference
는 LINK_NAME이 디렉토리에 대한 심볼릭 링크 인 경우 일반 파일로 취급합니다.


1
이것이 왜 정답입니까?
Mr.

1
@Mrchief 플래그가 /path/to/symlink없는 디렉토리로의 심볼릭 링크 인 경우 , 대신 -n심볼릭 링크를 만들 수 있습니다./path/to/symlink/target/path/to/symlink
Flimm

macOS에서는 일부 경우 (예 : /path/to/symlink존재하고 디렉토리이지만 심볼릭 링크 가 아닌 경우) 여전히 작동하지 않습니다 . 나는 그것을 해결하는 유일한 방법은 rm -rf먼저 달려야한다고 생각합니다 .
Flimm

78

이것은의 목적이다 ln의의 -f옵션 :이 링크를 작성하기 전에 기존 대상 파일을,있는 경우 제거합니다.

ln -sf /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

/path/to/recent/file가리키는 심볼릭 링크를 만들어 /path/to/data/folder/month/date/hour/minute/file기존 파일이나 파일에 대한 심볼릭 링크를 필요한 경우 바꿉니다 (아직 아무것도 없으면 정상적으로 작동합니다).

디렉토리 또는 디렉토리에 대한 심볼릭 링크가 이미 대상 이름으로 존재하는 경우 심볼릭 링크가 그 안에 작성됩니다 (따라서 /path/to/recent/file/file위의 예에서 끝납니다 ). 의 -n일부 버전에서 사용 가능한 옵션 ln은 필요에 따라이를 대신하여 디렉토리에 대한 심볼릭 링크를 처리합니다.

ln -sfn /path/to/data/folder/month/date/hour/minute/file /path/to/recent/file

POSIXln 는 지정하지 않으므로 -n일반적으로 신뢰할 수 없습니다. ln의 동작 중 상당수 는 구현에 따라 정의되므로 사용중인 시스템의 세부 사항을 확인해야합니다. 당신이 사용하는 경우 GNU를ln , 당신은 사용할 수 있습니다 -t-T(디렉토리의 존재의 행동은 완전히 예측 가능하게, 너무 옵션 즉, 대신에 같은 이름을 가진 기존 디렉토리 안에있는 링크를 만드는 실패).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.