링크를 만드는 데 문제가 있습니다. 다음을 만들고 싶습니다.
ls -la /usr/pkgs/python3/
total 44
drwxr-xr-x 5 root root 4096 Sep 3 2020 .
drwxrwxr-x 259 root root 20480 Feb 16 06:49 ..
drwxr-xr-x 7 root root 4096 Jan 9 2018 3.6.3
lrwxrwxrwx 1 root root 5 Nov 8 2018 3.6.3a -> 3.6.3
난 달린다:
ln -s /usr/pkgs/python3/3.6.3 /usr/pkgs/python3/3.6.3a
그러나 다음을 생성합니다.
ls -la /usr/pkgs/python3/
total 0
drwxrwxr-x 3 root root 20 Mar 27 23:47 .
drwxrwxr-x 3 root root 21 Mar 27 23:47 ..
drwxrwxr-x 4 root root 41 Mar 27 23:47 3.6.3a
ls -la /usr/pkgs/python3/3.6.3a/
total 0
drwxrwxr-x 4 root root 41 Mar 27 23:47 .
drwxrwxr-x 3 root root 20 Mar 27 23:47 ..
lrwxrwxrwx 1 root root 29 Mar 27 23:48 3.6.3 -> /usr/pkgs/python3/3.6.3
위의 예와 같은 상대 경로가 아닌 링크의 실제 경로를 사용하고 싶습니다 3.6.3a -> 3.6.3
. 내가 무엇을 놓치고 있나요?
답변1
이는 이름이 지정된 3.6.3a
디렉토리가 이미 존재하기 때문에 발생합니다 /usr/pkgs/python3/
.
이 ln
명령에는 두 가지 이상의 형식이 있습니다. 인용하다POSIX 사양(강조):
요약
ln [-fs] [-L|-P] source_file target_file
ln [-fs] [-L|-P] source_file... target_dir
설명하다
첫 번째 요약 양식에서
ln
유틸리티는 다음으로 지정된 대상 경로에 새 디렉토리 항목(링크)을 생성해야 합니다.대상 파일 피연산자. 이 옵션을 지정 하면-s
지정된 파일에 대한 심볼릭 링크가 생성됩니다.소스 파일피연산자. 첫 번째 요약 양식마지막 피연산자가 기존 디렉터리의 이름을 지정하지 않는 경우 가정해야 합니다.;두 번째 요약 형식에서
ln
유틸리티는 새 디렉토리 항목(링크)을 생성하거나-s
이 옵션이 지정된 경우 기호 링크를 생성해야 합니다.소스 파일대상 경로에 위치한 피연산자기존의디렉토리 이름은대상 디렉토리.
이름이 지정된 파일(넓은 의미에서 일반 파일일 필요는 없음)이 있고 이름이 지정된 파일이 없는 경우 3.6.3
실행 /usr/pkgs/python3/
하는 3.6.3a
명령은 예상한 결과를 제공합니다.
메모( 3.6.3
존재하고 3.6.3a
존재하지 않는 것으로 가정)
ln -s /usr/pkgs/python3/3.6.3 /usr/pkgs/python3/3.6.3a
동안 절대 경로에 대한 링크를 만듭니다.
ln -s 3.6.3 /usr/pkgs/python3/3.6.3a
3.6.3a
3.6.3
링크 자체와 동일한 디렉터리에 있어야 하는 파일 이름을 딴 상대 링크를 만듭니다 . (물론 ln -s ../path/to/3.6.3 /usr/pkgs/python3/3.6.3a
다른 디렉토리에 있는 파일에 대한 상대 링크를 만드는 데에도 사용할 수 있습니다).
GNU 구현에는 절대 경로에서 상대 링크를 만들 수 있는 옵션이 ln
있습니다 .-r
$ cd /tmp/
$ mkdir dir dir/subdir
$ touch file
$ ln -sr /tmp/file dir/subdir/link_to_file
$ ls -gG /tmp/dir/subdir/link_to_file
lrwxrwxrwx 1 10 Mar 28 01:31 /tmp/dir/subdir/link_to_file -> ../../file
답변2
가장 쉬운 방법은 해당 디렉터리로 이동하여 링크를 만드는 것입니다.
cd /usr/pkgs/python3/
ln -sf 3.6.3 3.6.3a
cd -
또는 서브쉘을 사용하십시오:
( cd /usr/pkgs/python3/ ; ln -sf 3.6.3 3.6.3a )