Проблема обхода символической ссылки в Linux

Я пытаюсь использовать USB PENDRIVE, чтобы увеличить мой текущий путь для создания большой библиотеки.

Итак, у меня есть идея создать в моей программе символическую ссылку на папку в Pendrive. Так что он использует пространство на Pen Drive вместо моего основного хранилища.

/ 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

, это создало ссылку «build» в / home / me Папка / opencv / , указывающая на мой флеш-накопитель.

Проблема здесь в том, что при обходе каталогов также указывается флэш-накопитель.

cd /home/me/opencv
ls

это отображает ряд папок и файлов внутри папки opencv

Но если я это сделаю ...

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

это отобразит пустую папку opencv с единственной папкой с именем build.

0
19.09.2017, 17:00
2 ответа

Вы можете попробовать монтирование bind , если вы можете использовать sudo или иметь права root. Например,

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, чтобы снять крепление.

0
28.01.2020, 02:45

Существует разница между логическими и физическими путями к каталогам, с которыми вы столкнулись.

cd /home/me/opencv/build

Это поместит вас в логический каталог /home/me/opencv/build, но физически вы на самом деле в /media/me/pendrive/opencv/buildблагодаря символической ссылке.

ls..покажет вам содержимое физического родительского каталога /media/me/pendrive/opencv.

Путь к физическому каталогу — это путь к логическому каталогу со всеми разрешенными символическими ссылками. Они одинаковы, если путь к логическому каталогу не содержит только символические ссылки.

См. также разницу между pwd -Lи pwd -P, находясь в каталоге сборки (и прочитав pwdруководство ).

cdтакже имеет флаги -Lи -P-Lпо умолчанию ).

1
28.01.2020, 02:45

Теги

Похожие вопросы