Linux에서 "ln -sT"는 무엇을 의미합니까?

Linux에서 "ln -sT"는 무엇을 의미합니까?

더 정확하게 말하자면, 저는 -s이 옵션이 무엇을 의미하는지 알고 있습니다. 저는 이 옵션을 매일 사용합니다. 그러나 누군가가 보안을 강화하기 /var/www/html/project위해 자신의 웹사이트의 문서 루트를 에서 으로 옮겼다는 것을 튜토리얼에서 보았습니다 ~/www/project(그는 나중에 권한 등을 변경했지만 이 경우에는 중요하지 않았습니다). 그런 다음 그는 다음과 같은 심볼릭 링크를 만들었습니다.

ln -sT ~/www/project /var/www/html/project

일반적으로 맨 페이지에서 이 옵션에 대한 다음과 같은 정보를 얻었 -T기 때문에 이것이 무엇에 사용되는지 궁금합니다 .-s-T

-T, --no-target-directory
     treat LINK_NAME as a normal file always

나는 이것이 무엇을 위한 것인지 정말로 이해하지 못한다. 심볼릭 링크를 만들 때 왜 -T이들을 결합 해야 합니까? -s이렇게 하면 큰 이점이 있나요?

답변1

ln요약은 다음과 같습니다.

ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
ln [OPTION]... TARGET                  (2nd form)
ln [OPTION]... TARGET... DIRECTORY     (3rd form)
ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

그렇지 않은 경우 이미 존재하고 디렉터리(또는 최종적으로 디렉터리로 확인되도록 검증된 심볼릭 링크) -T인 경우 첫 번째와 세 번째 형식은 모호하고 세 번째 형식이 선택됩니다. 링크가 생성됩니다.LINK_NAMEln~에목차. 그러므로

ln -s ~/www/project /var/www/html/project

후자가 이미 존재하는 경우 projectinside라는 이름의 링크가 생성됩니다./var/www/html/project

-T모호성을 제거하고 ln첫 번째 양식만 고려하도록 합니다. 링크가 없으면 지정된 이름으로 링크가 생성됩니다. 지정된 이름의 파일이나 디렉터리가 이미 있으면 LINK_NAME오류 ln가 발생합니다( -f지정하지 않는 한). .

그래서

ln -sT ~/www/project /var/www/html/project

/var/www/html/project을 가리키는 링크 ~/www/project나 오류 메시지(및 0이 아닌 종료 코드) 로 끝날 것이 보장됩니다 .

답변2

귀하의 경로(예제에서는 /var/www/html/project)가 최종 경로인지 확인하므로 링크가 존재하든 존재 /var/www/html/project하지 않든 100% 존재하게 됩니다./var/www/html/project/**project**/var/www/html/project

혼란스러울 수 있으므로 차이점을 보여주는 예

설정: cd /tmp; mkdir /tmp/aa; mkdir /tmp/bb;

ln -s /tmp/aa /tmp/bb새로운 심볼릭 링크가 생성됩니다/tmp/bb/aa -> /tmp/aa

하지만

ln -sT /tmp/aa /tmp/bb결과는 다음과 같습니다ln: failed to create symbolic link '/tmp/bb': File exists

-s매개변수는 그것과 아무 관련이 없습니다. (평소와 같이) 문서에 설명되어 있습니다.https://www.gnu.org/software/coreutils/manual/html_node/Target-directory.html

관련 정보