ln의 경로에는 하드 링크와 소프트 링크가 포함되어 있습니다.

ln의 경로에는 하드 링크와 소프트 링크가 포함되어 있습니다.

상대 경로는 어떻게 작동하나요 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(여기서는 해당 경로를 통해 액세스할 때)를 기준으로 합니다.linksome/dirsome/dir/linksome/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/Lb/c/L동일한 파일입니다. 동일한 inode이지만 두 개의 다른 디렉토리에 연결되어 있습니다 . 그것들은 모두 target 과의 심볼릭 링크입니다 ../a. 그러나 b/L구문 분석 하면 ./awhile 을 가리 b/c/L킵니다 ./b/a.

관련 정보