CDPATH 및 기호 링크를 사용하여 파일 열기

CDPATH 및 기호 링크를 사용하여 파일 열기

빠르게 이동하기 위해 다른 위치에 대한 기호 링크가 있는 CDPATH 경로를 추가했습니다. .bashrc에 다음 줄을 추가하여 이 작업을 수행했습니다.

export CDPATH=~/symlinks

디렉토리를 사용하면 모든 것이 잘 되며 어디에서나 심볼릭 링크된 폴더에 액세스할 수 있습니다.

예를 들어, 이렇게 하면:

$ ln -s ~/path/to/folder ~/symlinks/folder

그런 다음 다음과 같이 쓸 수 있습니다.

$ cd folder

현재 디렉토리에 관계없이 심볼릭 링크 폴더에 넣습니다.

그러나 파일에 대한 심볼릭 링크를 만든 다음 편집기로 열려고 하면 심볼릭 링크 디렉터리에 있지 않으면 빈 파일이 표시됩니다.

예를 들어, 이렇게 하면:

$ ln -s ~/path/to/file/filename ~/symlinks/filename

그런 다음 다음을 작성하십시오.

$ kwrite filename

내가 심볼릭 링크 폴더에 없으면 빈 파일을 얻습니다.

어디에서나 파일에 액세스하고 싶은데 어떻게 해야 합니까?

답변1

간단한 대답은 할 수 없다는 것입니다.

CDPATH가 하는 일은 "cd 폴더"를 입력하면 먼저 CDPATH에 "폴더"가 있는지 확인하고, 없으면 현재 있는 폴더를 확인하는 것입니다. 그러나 이는 디렉토리 변경에만 해당됩니다. kwrite는 CDPATH를 확인하지 않으며 AFAIK에는 특정 디렉토리를 검색할 수 있는 구성 옵션이 없습니다.

당신이 할 수 있는 일은 다음과 같이 kwrite를 대체하는 작은 쉘 스크립트를 만드는 것입니다:

#!/bin/sh

FILE=$1

if [ -f "$HOME/symlinks/$FILE" ] 
then
   kwrite "HOME/symlinks/$FILE"
else
   kwrite "$FILE"
fi

그런 다음 kwrite를 직접 실행하는 대신 스크립트("akwrite"로 이름을 지정할 수 있음)를 실행하십시오.

답변2

당신은 할 수 없습니다.

당신이 할 수 있는 일은 단축키를 쉘 변수로 정의하는 것입니다.

fn=~/path/to/file/filename
kwrite $fn

zsh에서는 디렉토리 해시를 사용하여 쉘 변수와의 이름 충돌을 피할 수 있습니다. 이는 나중에 확장되는 파일 이름 ~(예: 사용자 이름)의 별칭입니다. 이름에도 불구하고 이러한 별칭은 디렉터리를 가리킬 필요가 없으며 임의의 텍스트로 확장될 수 있습니다.

hash -d fn=~/path/to/file/filename
kwrite ~fn

관련 정보