우분투에서 디렉토리의 심볼릭 링크 만들기 [닫기]


247

아래는 디렉토리의 심볼릭 링크를 만드는 코드입니다.

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

나는 이미 디렉토리를 만들었습니다 /etc/nginx. 소스 디렉토리 ( /usr/local/nginx/conf/)의 내용이 대상 디렉토리 ( /etc/nginx) 의 내용에 포함되기를 원합니다 . 그러나 코드를 실행하면 의 내용 대신 /etc/nginx이라는 디렉토리가 포함 됩니다. 그 디렉토리에는 내가 원하는 내용이 있지만 잘못된 위치에 있습니다.confconf

디렉토리의 내용을 대상 폴더에 넣는 대신 대상 폴더에 디렉토리를 넣은 이유는 무엇입니까?


파일 (기본 파일 브라우저)을 사용할 수도 있습니다. 링크하려는 폴더를 마우스 오른쪽 버튼으로 클릭하고 "링크 만들기"옵션을 클릭하십시오. 필요에 따라 이동하고 이름을 바꿀 수있는 연결된 폴더를 만듭니다.
John Linhart

4
리눅스 bind mount기능을 사용하십시오 .
gkiko

답변:


254

이것은 ln두 번째 arg가 디렉토리 인 경우 의 동작입니다 . 그 안에 첫 번째 인수에 대한 링크를 배치합니다 . 당신이 원하는 경우 /etc/nginx심볼릭 링크로, 먼저 해당 디렉토리를 제거하고 동일한 명령을 실행해야합니다.



10
그 Unix.SE 링크는 여기서 다시 해결됩니다. 순환 의존성이있는 것 같습니다.
카이저

30

즉 무엇 ln대상이 이미 존재하고 디렉토리 때 어떻게 설명되어 있습니다. 당신이 원하는 경우에 /etc/nginx 심볼릭 링크가 아닌 포함 심볼릭 링크를 먼저 디렉토리로 만들 수 없습니다 더 나은했다!


51
귀하의 답변은 독자가 이미 답변을 알고있는 상황에서만 의미가 있습니다. 질문을하는 사람에게는 쓸모가 없습니다
Ricardo Saporta

1
마운트 된 USB 장치의 루트에 대한 심볼릭 링크를 실제로 만들 수 있습니까 (따라서이 폴더를 먼저 지울 수 없습니까)?
Grigory Kornilov

1
@GrigoryKornilov 존재하지 않는 것을 포함하여 원하는 것에 대한 심볼릭 링크 만들 수 있습니다 . 이 질문은 심볼릭 링크가 만들어지는 곳이 아니라 심볼 링크가 만들어진 곳에 관한 것입니다. 파일 시스템의 특정 경로 이름은 일반 파일이거나 디렉토리이거나 심볼릭 링크이거나 소켓 또는 파이프 또는 장치입니다. 그것은 할 수없는 많은 동시에 것들 중 하나보다 (즉, 당신이 동일한 이름을 가진 두 개 이상의 서로 다른 파일이 없습니다).
Celada

10

스크립트에서 다음과 같이 유용합니다.

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

스크립트를 다시 실행 한 후 "잘못된"루프 된 심볼릭 링크를 다시 만들기 전에 방지


1
우수한! 이것이 정확한 해결책입니다. 디렉토리가 이미 존재하는 경우 디렉토리를 작성할 필요가 없습니다. 하드 링크와 블랙홀 (/ dev / null)에서 싱크하기에 좋은 조정입니다.
Cosmo Arun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.