![ln의 경로에는 하드 링크와 소프트 링크가 포함되어 있습니다.](https://linux55.com/image/125229/ln%EC%9D%98%20%EA%B2%BD%EB%A1%9C%EC%97%90%EB%8A%94%20%ED%95%98%EB%93%9C%20%EB%A7%81%ED%81%AC%EC%99%80%20%EC%86%8C%ED%94%84%ED%8A%B8%20%EB%A7%81%ED%81%AC%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%98%EC%96%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
상대 경로는 어떻게 작동하나요 ln (-s or not)
? 예를 들어, 내가 입력하면 ln -s foo bar/banana.txt
이것은 무엇을 의미합니까? foo는 무엇과 관련이 있나요? 현재의 경로와는 아무 관련이 없는 것 같기 때문입니다. 그리고 삭제하는 것과 -s
삭제하지 않는 것의 차이가 있나요 ? 나는 이것을 테스트했는데 그 결과가 나에게 이해가 되지 않으며 매뉴얼 페이지에서도 이에 대해 설명하지 않는 것 같습니다. 누구든지 이것을 설명할 수 있나요?
답변1
있는 것과 없는 것에는 차이가 있습니다 -s
.
이내에 -s
:
ln -s path/to/file some/dir/link
path/to/file
심볼릭 링크 대상 some/dir/link
(또는 디렉터리인 some/dir/link/file
경우 )으로 설정합니다.link
기호 링크는 기호 링크의 대상인 경로(0이 아닌 바이트 배열일 수 있으며 일부 시스템에서는 빈 문자열도 허용함)를 /포함/하는 특수한 유형의 파일입니다. ln
첫 번째 매개변수로 설정합니다.
링크가 확인된 후(링크가 나중에 사용될 때) 경로는 (하드) 링크가 있던 디렉터리 path/to/file
(여기서는 해당 경로를 통해 액세스할 때)를 기준으로 합니다.link
some/dir
some/dir/link
some/dir/link
path/to/file
명령이 실행될 때(또는 항상) 존재할 필요는 없습니다 .ln
그리고:
ln path/to/file some/dir/link
이는 다음과 유사합니다:
cp path/to/file some/dir/link
path/to/file
실행 중인 프로세스의 현재 작업 디렉터리를 기준으로 합니다 ln
.
심볼릭 링크에 대한 여러 (하드) 링크를 생성하는 것을 막을 수 있는 방법은 없습니다. 예를 들어:
$ mkdir -p a b/c b/a
$ ln -s ../a b/L # b/L a symlink to "a"
$ ln b/L b/c/L
b/L
b/c/L
동일한 파일입니다. 동일한 inode이지만 두 개의 다른 디렉토리에 연결되어 있습니다 . 그것들은 모두 target 과의 심볼릭 링크입니다 ../a
. 그러나 b/L
구문 분석 하면 ./a
while 을 가리 b/c/L
킵니다 ./b/a
.