전체 경로를 입력하지 않고 현재 폴더를 절대 경로로 Symlink


10

심볼릭 링크는 상대 경로에 대한 바로 가기로 저장됩니다.

~/foo ln -s . ~/bar/foo
~/foo ls -l ~/bar
total 8
lrwxr-xr-x    1 me  me     1B 15 May 14:38 foo -> .

파일 ~/bar/foobar현재 디렉토리에 대한 심볼릭 링크 입니다.

다른 디렉토리에서 당시의 디렉토리에 대한 심볼릭 링크를 만들려면 어떻게해야합니까? 위의 예에서 나는에 대한 심볼릭 링크로 ~/foo만들고 싶습니다 . 물론 현재 디렉토리는 5 자보다 약간 길어서 입력하기 쉽지 않을 수 있습니다.~/bar/foo~/foo

답변:


13

나는 유형을 말할 것입니다

ln -s $PWD ~/bar/

또는

ln -s `pwd` ~/bar/

당신은 또한 사용할 수 있습니다

ln -s $PWD ~/bar/

그러나 나는 당신이 그것을 알았고 그것이 당신이 돌보고있는 것이 아닙니다. 목표가 무엇인지 설명하기 위해 질문을 업데이트 할 수 있습니까?

경로에 공백이 있으면 다음을 사용하는 것이 좋습니다.

ln -s "$PWD" ~/bar/

2
$변수와 명령 대체를 두 번 인용하십시오 . 그렇지 않으면 공백이있는 파일 이름이 실행됩니다. 어쨌든 기본 링크 이름이므로 끝이 필요하지 않습니다 $(basename $PWD)(그리고 $(-:)을 잊어 버렸 습니다).
Daniel Andersson

내가 바보 같았 어 나는 pwd접근법을 시도 하고 무언가 잘못되었다고 생각했다. 이것을 ID-T-T 오류
Gareth

@DanielAndersson 당신은 경로의 공백을 지원하지 않는 것이 맞습니다. 좋은 지적. 그래서 기록을 위해 나는 대답을 업데이트 할 것입니다 :)
Huygens

4

물론:

ln -s "$(readlink -f .)" ~/bar

(스크립트의 일반성에 좋을 수도 있음) 또는 그냥

ln -s ~/foo ~/bar

상대적으로 :

ln -s ../foo ~/bar

탭 완성은 입력하는 데 도움이됩니다.


grawity의 의견과 http://lists.gnu.org/archive/html/coreutils-announce/2012-03/msg00000.html :

* 릴리스 8.16 (2012-03-26)의 주목할만한 변경 사항 [안정한]

...

ln이제 --relative대상 지정 방법에 관계없이 대상에 상대적인 심볼릭 링크를 생성하는 옵션을 허용 합니다.

따라서이 버전으로 :

ln -s --relative . ~/bar

작동해야합니다 (실제로는 --relative스위치를 추가 한 첫 번째 예와 동일합니다 ).


4
최신 coreutils 는을 사용하여 상대 심볼릭 링크를 자동으로 만들 수 있습니다 ln -s -r foo ~/bar.
user1686

@grawity : 흥미 롭습니다. 내 시스템에는 없지만 분명히 (Debian Sid).
Daniel Andersson

git에 따르면 3 월 22 일 v8.16에 추가 된 것으로 보입니다.
user1686

1
또한,의 이점이 무엇인가 $(readlink -f .)이상은 $PWD?
user1686

2
@grawity :별로. 링크를 통해 현재 작업 디렉토리에 도달 한 경우 다르게 작동합니다. readlink -f그러면 현재 디렉토리의 절대 대상 경로에 $PWD심볼릭 링크되고 , 현재 디렉토리 에있는 리터럴 디렉토리에 심볼릭 링크됩니다.
Daniel Andersson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.