전체 파일 경로를 입력하는 것보다 현재 디렉터리의 파일에 대한 심볼릭 링크를 만드는 더 쉬운 방법이 있습니까?

전체 파일 경로를 입력하는 것보다 현재 디렉터리의 파일에 대한 심볼릭 링크를 만드는 더 쉬운 방법이 있습니까?

알아요심볼릭 링크를 생성할 때경로는 절대 경로여야 합니다.목적지 위치 기준

/usr/local/bin현재 디렉터리에 있는 파일에 대한 링크를 만들려는 경우 다음 을 수행하는 것보다 더 쉬운 방법이 있습니까? 예를 들어 bash의 탭 완성 기능을 사용하는 경우...

ln -s $(pwd)/target_file /usr/local/bin/

...?
(이를 $(_something_)평가 _something_하고 쉘 명령으로 대체합니다.)

답변1

파일의 탭 완성이 $PWD내 변수에서 작동합니다.

bash-4.4$ touch bar baz
bash-4.4$ ln -s $PWD/ba<tab>
bar  baz

답변2

완료하려면 몇 가지 대안이 있습니다 zsh.

  • ~0(또는 ~+0)는 약간 더 짧은 대안입니다(파일 이름 완성은 , 또는 , 또는 이후와 마찬가지로 작동합니다 $PWD). ...는 이전에 있었던 디렉토리이며 완성 시스템은 다음과 같이 구성할 수도 있습니다. (위)이며 확장됩니다.$PWD/fi<Tab>~0/fi<Tab>$(pwd)fi<Tab>~1~2~+<Tab>
  • 원인이 절대 경로로 확장되는 ln -s file(:A) /usr/local/bin곳을 사용할 수 있습니다 (그러나 대상의 심볼릭 링크로 확인된다는 점에 유의하세요).(:A)file

또한 GNU -r/ 옵션에 주목하세요:--relativeln

ln -rs file /usr/local/bin/

다음과 같이 현재 디렉토리를 가리키는 /usr/local/bin/file심볼릭 링크(상대 경로로 )를 생성합니다 .../../../home/you/filefile

ln -s "$(realpath -s --relative-to=/usr/local/bin file)" /usr/local/bin

(GNU 사용 realpath).

관련 정보