심볼릭 링크 생성-존재하는 경우 덮어 쓰기 싶습니다 . /path/to/recent/file존재하는 경우 미리

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

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



답변

설명서를 읽으 십시오 .

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

$ 남자 ln

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


답변

이것은의 목적이다 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(디렉토리의 존재의 행동은 완전히 예측 가능하게, 너무 옵션 즉, 대신에 같은 이름을 가진 기존 디렉토리 안에있는 링크를 만드는 실패).