Linux 심볼릭 링크 통과 문제

Linux 심볼릭 링크 통과 문제

현재 구축하고 있는 대규모 라이브러리에 대한 경로를 늘리기 위해 USB PENDRIVE를 사용하려고 합니다.

그래서 내 프로그램에서 Pendrive의 폴더에 대한 심볼릭 링크를 만드는 아이디어가 생겼습니다. 이렇게 하면 메인 스토리지 대신 펜 드라이브의 공간을 사용하게 됩니다.

/home/me/opencv/ <-- 제가 빌드하고 싶은 제품입니다. /home/me/opencv/build/ <-- 빌드 폴더입니다.

이 시점에서는 이를 구축할 메모리가 부족하여 다음에서 이 심볼릭 링크를 만들었습니다./home/me/opencv/

mkdir /media/me/pendrive/opencv/build/

ln -s /media/me/pendrive/opencv/build/  /home/me/opencv/ -s

/home/me/opencv/이로 인해 내 펜 드라이브를 가리키는 폴더 아래에 "빌드" 링크가 생성되었습니다.

여기서 문제는 디렉터리 탐색이 펜 드라이브도 가리킨다는 것입니다.

cd /home/me/opencv
ls

이것은 opencv 폴더 내의 많은 폴더와 파일을 렌더링합니다.

하지만 내가 이렇게 하면...

cd /home/me/opencv/build
ls ..

그러면 build라는 폴더가 하나만 있는 빈 opencv 폴더가 렌더링됩니다.

답변1

차이가 있다논리그리고물리적발생한 디렉터리 경로입니다.

cd /home/me/opencv/build

이렇게 하면 논리적 디렉터리에 들어가게 되지만 심볼릭 링크 덕분에 /home/me/opencv/build실제로는 논리적 디렉터리에 있게 됩니다./media/me/pendrive/opencv/build

ls ..당신에게 무엇을 보여줄 것인가물리적상위 디렉토리 /media/me/pendrive/opencv.

실제 디렉토리 경로는 모든 기호 링크가 확인된 논리적 디렉토리 경로입니다. 논리 디렉토리 경로에 기호 링크 이상이 포함된 경우에는 동일합니다.

또한 pwd -L해당 빌드 디렉터리와 while의 차이점을 확인하세요(그리고 매뉴얼도 읽어보세요).pwd -Ppwd

cd-L및 플래그 도 있습니다 -P( -L기본값임).

답변2

당신은 시도 할 수 있습니다제본사용할 수 있다고 가정하고 설치하십시오.스도아니면 루트 권한이 있어야 합니다. 예를 들어,

mkdir /home/me/opencv/build
mkdir -p /media/me/pendrive/opencv/build
sudo mount -o bind /home/me/opencv/build /media/me/pendrive/opencv/build

그런 다음 에 들어가면 의 내용이 /home/me/opencv/build표시됩니다 . 설치를 취소 하는 데 사용됩니다 .../home/me/opencv/sudo umount /home/me/opencv/build

관련 정보