날짜별로 구성(이름 지정)된 다른 디렉터리가 포함된 특정 디렉터리가 있습니다. 쉽게 참조할 수 있도록 current
최신 심볼릭 링크를 가리키는 링크를 지정했습니다 .
새 날짜 디렉토리를 생성하는 스크립트에서 current
생성 이후 최신 디렉토리를 가리키도록 심볼릭 링크를 생성하거나 수정하고 싶습니다.
예를 들어 적절한 명령은 다음과 같습니다.
ln -fs 2017-03-01 current
current
이 방법은 기호 링크가 아직 존재하지 않는 경우에 작동합니다.
그러나 current
심볼릭 링크가 이미 생성된 경우(그리고 디렉토리를 가리키는 경우 2017-02-28
)작동하지 않습니다:
결과적으로 심볼릭 링크를 삭제하고 다음을 가리키는 새 심볼릭 링크를 current
생성하는 대신 깨진 심볼릭 링크가 됩니다.current
2017-03-01
~라고 불리는 2017-03-01
방향그 자체,나머지~에디렉토리 2017-02-28
(이것은 심볼릭 링크 current
가 가리키는 곳이며 여전히 가리키는 곳입니다).
이게 날 너무 혼란스럽게 해스펙을 읽어보니ln
. 이는 예상된 동작임이 밝혀졌습니다.
요약
ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir
설명하다
...
두 번째 요약 형식은 최종 피연산자가 기존 디렉터리의 이름을 지정할 때 사용해야 합니다.
그렇다면 방법이 없을 것 같군요심볼릭 링크 재지정현재 디렉토리를 가리키고 있습니다.새로운 목표를 향해,새 대상에 이름이 있는 경우다른심볼릭 링크의 이름입니다. 그래서 ln -fs
생각했던 대로 되지 않네요.
~ 해야 하다나 rm current
, 아니면 내가 간과하고 있는 또 다른 방법이 있습니까?
답변1
GNU에는 기호 링크를 다시 지정할 수 있는 가 ln
있습니다 .ln -n
$ mkdir dir1 dir2
$ ln -s dir1 sym
# dir1/
# dir2/
# sym -> dir1/
$ ln -nsf dir2 sym
# dir1/
# dir2/
# sym -> dir2/
BSD coreutils는 다음과 같은 방식 -h
으로 이 플래그를 사용합니다.-n
그러나 바이너리는 -n
GNU와의 호환성을 위해서만 지원 될 수 있습니다..
이 플래그는 동일한 위치로 리디렉션하는 데도 필요합니다 -f
.