모든 파일 내용이 포함된 디렉토리를 심볼릭링크할 수 없습니다.

모든 파일 내용이 포함된 디렉토리를 심볼릭링크할 수 없습니다.

locations에 심볼릭링크하고 싶습니다 ~/locations.

이렇게 하면 의 모든 내용이 다음 locations에 표시됩니다 ~/locations.

 λ tree locations/
locations/
├── adelaide
│   └── config
├── amber
│   └── config
├── austin
│   └── config
├── boston
│   └── config
├── boulder
│   └── config
├── durham
│   └── config
├── jade
│   └── config
├── losangeles
│   └── config
├── minsk
│   └── config
├── newcastle
│   └── config
├── opal
│   └── config
└── pearl
    └── config

심볼릭 링크를 시도하면 예상대로 작동하지 않습니다.

 λ ln -s locations/*/* ~/locations
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations/config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists
ln: /Users/bob.smith/locations//config: File exists

tree locations
 λ tree ~/locations/
/Users/bob.smith/locations/
└── config -> locations/Adelaide/config

locations보시다시피, 다음 디렉터리가 출력에서 ​​누락되었습니다.

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

정확히 무엇을 달성하려고 하는지는 확실하지 않습니다. 디렉토리 심볼릭 링크입니까, 아니면 개별 파일을 가리키는 심볼릭 링크의 "링크 팜"입니까?

심볼릭 링크는 경로를 포함하는 작은 파일입니다. 이름 확인 중에 파일에 액세스하면 이 경로가 대체됩니다. 경로는 상대 경로이거나 절대 경로일 수 있습니다.

디렉토리 심볼릭 링크를 생성하려면 다음을 수행하면 됩니다.

ln -s locations ~/locations

그러나 문제가 있습니다! locations예를 들어 홈 디렉토리에 심볼릭 링크가 생성 됩니다 /home/yourname/locations. 심볼릭 링크의 내용은 상대 경로가 됩니다 locations. 즉, 심볼릭 링크는 자신을 가리키며 쓸모없는 루프를 만듭니다.

올바른 상대 경로 또는 절대 경로를 제공해야 합니다. 예를 들면 다음과 같습니다.

ln -sf /absolute/path/to/locations ~/locations

라는 유틸리티가 있는 경우 realpath하위 디렉토리가 다음과 같은 상위 디렉토리에서 이 작업을 수행할 수 있습니다 locations.

ln -sf "$(realpath locations)" ~/locations

realpathlocations모든 기호 링크가 해결된 인쇄된 절대 경로입니다 . 명령 $(...)대체 구문이 명령줄에서 이를 대체합니다. 생성된 경로에 공백이 포함된 경우에는 주위에 따옴표를 넣어서 여러 매개변수로 분할했습니다.

파일 트리는 심볼릭 링크를 사용하여 미러링될 수 있습니다. lndirXWindow 시스템에서 파생된 유틸리티 가 있습니다 . 일반적으로 GNU/Linux 배포판에 설치하려는 경우 lndirX 콘텐츠와 함께 패키지됩니다. lndir원본 디렉터리 트리를 모방한 빈 디렉터리 트리 뼈대를 만들고 해당 원본 파일을 가리키는 심볼릭 링크로 채웁니다.

심볼릭 링크된 일반 디렉터리를 통해 액세스하려는 파일 트리가 있는 경우 이에 대한 스크립트를 작성해야 합니다.

관련 정보