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

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

데이터를 꺼내서 /path/to/data/folder/month/date/hour/minute/file심볼릭 링크하고 /path/to/recent/file파일이 생성될 때마다 자동으로 이 작업을 수행하고 싶습니다.

존재 여부를 미리 알 수 없다고 가정하면 /path/to/recent/file어떻게 생성(존재하지 않는 경우)하거나 교체(존재하는 경우)합니까? 그것이 존재하는지 확인한 다음 삭제, 심볼릭 링크를 수행할 수 있다고 확신하지만, 내가 원하는 것을 한 단계에서 수행하는 간단한 명령이 있는지 궁금합니다.

답변1

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동작은 구현에 따라 정의되므로 사용 중인 시스템의 세부 사항을 실제로 확인해야 합니다. 당신이 사용하는 경우암소 비슷한 일종의 영양ln-t, 및 -T옵션을 사용하여 디렉터리가 존재할 때 동작을 완전히 예측 가능하게 만들 수도 있습니다(동일한 이름을 가진 기존 디렉토리에 링크를 생성하는 대신 실패합니다.

답변2

읽어주세요수동.

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

$ 사람 ln

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

관련 정보